SSH预期脚本

SSH预期脚本,ssh,expect,Ssh,Expect,我有一个Expect脚本,另一个脚本调用它来记录Cisco设备。由于某些原因,它登录到Cisco设备的速度变得很慢。如何提高此脚本的速度 #/usr/bin/expect 日志用户0 设置超时10 设置用户id“id” 设置密码“pass” #获取两个参数—(1)要执行的设备(2)命令 设置设备[lindex$argv 0] set命令[lindex$argv 1] spawn/usr/bin/ssh-l$userid$device 匹配_max[expr 32*1024] 期待{ -re“RS

我有一个Expect脚本,另一个脚本调用它来记录Cisco设备。由于某些原因,它登录到Cisco设备的速度变得很慢。如何提高此脚本的速度

#/usr/bin/expect
日志用户0
设置超时10
设置用户id“id”
设置密码“pass”
#获取两个参数—(1)要执行的设备(2)命令
设置设备[lindex$argv 0]
set命令[lindex$argv 1]
spawn/usr/bin/ssh-l$userid$device
匹配_max[expr 32*1024]
期待{
-re“RSA密钥指纹”{send“yes\r”}
超时{puts“主机已知”}
}
期待{
-re“username:{send“$userid\r”}
-re“(P|P)assword:“{send”$password\r}
-re“警告:{发送“$password\r”}
-re“连接被拒绝”{puts“主机错误->$expect_out(缓冲区)”;退出}
-re“连接关闭”{puts“主机错误->$expect_out(缓冲区)”;退出}
-re“无地址”。{puts“主机错误->$expect_out(缓冲区)”;退出}
超时{puts“超时错误。设备是否已关闭或无法访问??ssh_expect”;退出}
}
期待{
-re“\[\\>]$”{send“term len 0\r”}
超时{puts“错误读取提示->$expect_out(缓冲区)”;退出}
}
期待{
-re“\[\\>]$”{send“$command\r”}
超时{puts“错误读取提示->$expect_out(缓冲区)”;退出}
}
expect-re“\[\\>]$”
设置输出$expect\u out(缓冲区)
发送“退出\r\n”
放入“$output\r\n”

我首先要确保承载SSH守护进程的服务器或设备的熵不是很低,我要使用或类似的方法来分析流量,看看连接的哪一方似乎在等待另一方。

我要首先确保承载SSH守护进程的服务器或设备的熵不是很低,我会使用或类似工具来分析流量,看看连接的哪一方似乎在等待另一方。

exp\u internal 1
添加到您的Expect脚本中。您将能够看到Expect如何匹配这些模式。我怀疑您的脚本恰好暂停了$timeout秒,因为您的一个模式未能匹配。

exp\u internal 1
添加到您的预期脚本中。您将能够看到Expect如何匹配这些模式。我怀疑您的脚本恰好暂停了$timeout秒,因为您的一个模式不匹配。

您完全正确。这是行暂停并导致超时。发送:将“exit\r”发送到{exp6}write()无法写入任何内容-将休眠(1)并重试。。。我不知道退出有什么问题。在您
发送“exit\r”
之后,您可能想要
期望eof
谢谢您的回复。expect eof help正确退出是因为其他行出现问题-expect:read eof expect:set expect\u out(spawn\u id)“exp6”expect:set expect\u out(buffer)“退出”与路由器的连接\r\n已关闭。\r\r\nwrite()无法写入任何内容-将休眠(1)并重试。。。write()无法写入任何内容-将休眠(1)并重试。。。我真的不知道是什么让我试着去写,却失败了。你是绝对正确的。这是行暂停并导致超时。发送:将“exit\r”发送到{exp6}write()无法写入任何内容-将休眠(1)并重试。。。我不知道退出有什么问题。在您
发送“exit\r”
之后,您可能想要
期望eof
谢谢您的回复。expect eof help正确退出是因为其他行出现问题-expect:read eof expect:set expect\u out(spawn\u id)“exp6”expect:set expect\u out(buffer)“退出”与路由器的连接\r\n已关闭。\r\r\nwrite()无法写入任何内容-将休眠(1)并重试。。。write()无法写入任何内容-将休眠(1)并重试。。。我真的不知道是什么让我试着去写却失败了。