【问题标题】:unmanaged task in linuxlinux中的非托管任务
【发布时间】:2017-05-16 11:38:48
【问题描述】:

我试图创建一个非托管脚本来管理我的 tp-link 开关(更改状态、描述和速度,...)。 tp-link 使用与 cisco 类似的连接...例如:Deactivate a port:

enable
configure
interface gigabitEthernet 1/0/20
shutdown

如果我连接到我的交换机(使用 ssh),我可以毫无问题地执行所有命令,但我使用命令行不起作用:

例如:

ssh x.x.x.x "sh interface configuration"

此命令应该显示我的端口状态,但不显示任何内容。用户名和密码没问题。 SSH 返回:

Authenticated with partial success.
Connection to 192.168.20.26 closed by remote host.

您能说出执行此操作的其他选项吗?

我尝试使用 expect 和 telnet 执行此选项,结果还可以,但如果我使用 ssh 连接执行 expect 也不起作用。

我的期望脚本:

#!/usr/bin/expect -f

spawn -noecho telnet 192.168.20.26

expect "User:"
send -- "admin\r"
expect "Password:"
send -- "mypass\r"
send -- "enable\r"
send -- "configure\r"
send -- "interface gigabitEthernet 1/0/20\r"
send -- "description hola\r"
send -- "exit\r"
send -- "exit\r"
send -- "exit\r"
send -- "exit\r"
send -- "exit\r"

interact

脚本运行良好,但如果我从远程主机执行此脚本,则无法运行。

最好的问候。

【问题讨论】:

  • 如果您提供了一些不起作用的期望代码 - 我们可以提供帮助,否则这个问题有点太笼统了。
  • 嗨@favoretti。我用期望脚本编辑了我的帖子。问题不在于脚本。这工作正常,但如果我用远程主机执行期望不起作用(不要登录)。
  • 所以当你用ssh 替换telnet 时,它什么都不做?您是否尝试过使用ssh -T(不要分配PTY)。
  • 哦,是的@favoretti 如果我使用 ssh -t 可以正常工作。谢谢!!
  • 将其添加为答案。你用的是小写的-t,对吧?所以基本上是强制PTY分配?

标签: linux ssh expect telnet


【解决方案1】:

上述问题是ssh无法自动分配PTY造成的。 ssh -t 解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    相关资源
    最近更新 更多