如何在shell中使用期望命令进行远程执行命令脚本

  介绍

如何在shell中使用期望命令进行远程执行命令脚本?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>预计是用来实现自动交互功能的工具之一,使用expect-send来实现交互过程。

注意:

1,脚本的执行方法与bash shell不一样,比如:<代码>期待的例子。sh

2,向一个脚本传递参数时,bash shell是使用$ 1,$ 2…来接收参数的;而期望则将脚本的执行参数保存在数组$ argv中,在脚本中一般将其赋值给变量:<代码>设置变量名[lindex $ argv参数)

# !/usr/bin/期望   set  ip  [lindex  argv 美元;0]   set  password  [lindex  argv 美元;1]   set  timeout  2   spawn  telnet  $ ip   expect “* femto 登录:“   send “根\ r"   expect “*密码:“   send “密码\ r"美元;   #,进入指定的机器后,就可执行相应的命令或者脚本   交互   # expect  eof

注意:若登陆后便退出远程终端,则写<代码>期待eof>

3,执行脚本

expect  autologin.sh  192.168.1.240 根

很多时候,需要用期望命令实现登录远端服务器执行简单命令,诸如:重启服务器,ftp, ls, scp等命令。里面涉及到输入密码的交互式场景,这个时候期望命令的巨大功效就出来了,下面是一个比较经典脚本实现:

# !/usr/bin/tclsh   package  require 期望   set  host_ip1  [lindex  argv 美元;0]   set  host_usr  [lindex  argv 美元;1]   set  host_pwd  (lindex  argv 美元;2)   spawn  ssh  host_usr@ host_ip1美元   set  timeout  60   expect  {   -re 才能“password", {send “host_pwd \ n"美元;},   -re 才能“是的/no", {send “是的\ n" exp_continue}, #,有的时候输入几次密码来确认,exp_continue   }   expect “#”;   send “ls /home/$ {host_user}, |, tee  -a /tmp/ls.txt  \ r"   expect “#”;   send “退出\ r"   expect  eof

看完上述内容,你们掌握如何在shell中使用期望命令进行远程执行命令脚本的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

如何在shell中使用期望命令进行远程执行命令脚本