shell中使用expect命令进行远程执行命令脚本

 更新时间:2019年03月04日 09:35:30   作者:杰瑞26  
今天小编就为大家分享一篇关于shell中使用expect命令进行远程执行命令脚本,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

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

注意:

1、脚本的执行方法与bash shell不一样,比如:expect example.sh

2、向一个脚本传递参数时,bash shell是使用$1,$2...来接收参数的;而expect则将脚本的执行参数保存在数组$argv中,在脚本中一般将其赋值给变量:set 变量名 [lindex $argv 参数]

#!/usr/bin/expect
set ip [lindex $argv 0]
set password [lindex $argv 1]
set timeout 2
spawn telnet $ip
expect "*femto login:"
send "root\r"
expect "*Password:"
send "$password\r"
# 进入指定的机器后,就可执行相应的命令或者脚本
interact
#expect eof

注意:若登陆后便退出远程终端,则写expect eof即可。

3、执行脚本

expect autologin.sh 192.168.1.240 root

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

#!/usr/bin/tclsh
package require Expect
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 "yes/no" {send "yes\n";exp_continue} # 有的时候输入几次密码来确认,exp_continue
}
expect "#"
send "ls /home/${host_user} | tee -a /tmp/ls.txt \r"
expect "#"
send "exit\r"
expect eof

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • 5个Shell脚本编程入门练习例子

    5个Shell脚本编程入门练习例子

    这篇文章主要介绍了5个Shell脚本编程入门例子,涵盖了各种操作,又有一些游戏的性质,作为入门练习例子是不很不错的,需要的朋友可以参考下
    2014-06-06
  • Linux shell 实现用for循环100次的方法

    Linux shell 实现用for循环100次的方法

    今天小编就为大家分享一篇Linux shell 实现用for循环100次的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 详解gitBash中使用Linux中的tree命令

    详解gitBash中使用Linux中的tree命令

    最近很多同学问小编关于Linux命令的问题,小编今天主要介绍Linux里的tree命令,tree命令是一种递归目录列表显示命令,使用该命令可以以树状图的形式列出一个目录下所有文件内容,本文给大家介绍gitBash中使用Linux中的tree命令,一起看看吧
    2023-11-11
  • Linux中Vi和Vim编辑器用法详解

    Linux中Vi和Vim编辑器用法详解

    本文详细讲解了Linux中Vi和Vim编辑器的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 简单的远程FTP定时备份Shell脚本分享

    简单的远程FTP定时备份Shell脚本分享

    这篇文章主要介绍了简单的远程FTP定时备份Shell脚本分享,,需要的朋友可以参考下
    2014-07-07
  • linux 中的gzip命令

    linux 中的gzip命令

    gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。接下来通过本文给大家分享linux 中的gzip命令,感兴趣的朋友一起看看吧
    2017-09-09
  • 使用curl递归下载软件脚本分享

    使用curl递归下载软件脚本分享

    本脚本完成了对apache的镜像网站的递归扫描。通过文件IO的缓存方式记录可下载文件,再针对需要文件的后缀名批量下载软件包备用,大家可以修改成自己脚本
    2014-03-03
  • 用来查看linux内存使用情况的shell脚本

    用来查看linux内存使用情况的shell脚本

    本文为大家提供的这个脚本,通过查看status文件中VmRSS的字段来查看系统或进程使用的内存情况,有需要的朋友不妨参考下
    2013-02-02
  • 深入理解Linux shell中2>&1的含义(全网最全,看完就懂)

    深入理解Linux shell中2>&1的含义(全网最全,看完就懂)

    这篇文章主要介绍了深入理解Linux shell中2>&1的含义,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Shell正则表达式(元字符)的使用

    Shell正则表达式(元字符)的使用

    元字符指的是能够被shell解释的特殊字符,每个特殊字符都有其特殊含义,本文主要介绍了Shell正则表达式(元字符)的使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12

最新评论