linux – 期望脚本期望错过发送字符串延迟问题

linux – 期望脚本期望错过发送字符串延迟问题,第1张

概述我编写了active.ksh脚本(基于expect),以便自动登录某些Solaris机器并执行hostname命令(登录虚拟IP以验证哪个主机名是活动机器 – 我有两个集群solaris机器) 问题在于期待; expect发送密码字符串(pass123)并且它错过了密码问题,它仍然等待密码. 实际上密码后输入了密码(pass123) 题.在大多数情况下,expect脚本工作正常,但有时它会丢失密码 我编写了active.ksh脚本(基于expect),以便自动登录某些Solaris机器并执行hostname命令(登录虚拟IP以验证哪个主机名是活动机器 – 我有两个集群solaris机器)

问题在于期待; expect发送密码字符串(pass123)并且它错过了密码问题,它仍然等待密码.

实际上密码后输入了密码(pass123)
题.在大多数情况下,expect脚本工作正常,但有时它会丢失密码.

问题的例子

./active.ksh spawn ssh 10.10.18.61 sh: /usr/local/bin/stty: not found This computer system,including all related equipment,networks and network devices      (specifically including Internet access),is provIDed only for authorized uss Password:        * my remark - pass123 string was missed the Password Question        pass123 Password:

剧本

#!/bin/ksh  VIP_ADDRESS=10.10.18.61  expect_for_verify_which_active_machine=`cat << EOF  set timeout -1  spawn  ssh   $VIP_ADDRESS   expect {  ")?"   { send "yes\r"  ; exp_continue  }  Password:  {send "pass123\r"}  }  expect >  {send "hostname\r"}  expect >    {send exit\r}  expect eof  EOF`  expect -c  "$expect_for_verify_which_active_machine"

正确结果的例子

./active.ksh   [FrIDay,February 24,2012  2:32:06 PM IST] INFO Verify which is active SMU machine   spawn ssh 10.10.18.61  sh: /usr/local/bin/stty: not found  This computer system,networks and network devices       (specifically including Internet access),is provIDed only for authorized uss  yes  Password:   Last login: Fri Feb 24 14:32:06 2012 from smu1a  This computer system,is provIDed only for authorized uss  solaris1:/ ROOT > hostname  solaris1  solaris1:/ ROOT > exit  logout  Connection to 10.10.18.61  closed.
解决方法 如果您在登录期间监视字符串,您将希望避免使用“密码:”,您会发现它并不总是大写.

将你的期望改为-re“(.*)assword:”或“assword:”往往会更有效地抓住这条线.

如果你发现时间仍然太快,你可以睡一觉;在你发送之前

这就是我用来期待的东西

expect {    "(yes/no)?" { send "yes\n" }    "passphrase" { send "\r" }    -re "(.*)assword:"  { sleep 1; send -- "password\r" }    -re $prompt { return }    timeout     { puts "un-able to login: timeout\n"; return }    eof         { puts "Closed\n" ; return }}
总结

以上是内存溢出为你收集整理的linux – 期望脚本期望错过发送字符串延迟问题全部内容,希望文章能够帮你解决linux – 期望脚本期望错过发送字符串延迟问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1037984.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存