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

所属分类: 脚本专栏 / linux shell 阅读数: 963
收藏 0 赞 0 分享

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

总结

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

更多精彩内容其他人还在看

linux sudo密码输入时显示星号的操作方法

在输入linux sudo密码的时候终端是不显示任何东西的,我们不知道我们按下的密码到底输入进去了没有,如果可以像在网站上登录账号密码的时候显示星号多好,下面小编给大家介绍下linux sudo密码输入时显示星号的操作方法
收藏 0 赞 0 分享

如何让history命令显示日期和时间

我们都对 history 命令很熟悉。它将终端上 bash 执行过的所有命令存储到 .bash_history 文件中,来帮助我们复查用户之前执行过的命令。这篇文章主要介绍了让history命令显示日期和时间的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

shell实现图书管理系统

这篇文章主要介绍了shell实现图书管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

shell实现学生成绩管理系统

这篇文章主要为大家详细介绍了shell实现学生成绩管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

shell编程实现学生成绩管理系统

这篇文章主要为大家详细介绍了shell编程实现学生成绩管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

利用Linux中的crontab实现分布式项目定时任务功能

crond是Linux用来定期执行程序的命令.这篇文章主要介绍了利用Linux中的crontab实现分布式项目定时任务,需要的朋友可以参考下
收藏 0 赞 0 分享

Linux之时钟中断详解

这篇文章主要介绍了Linux之时钟中断详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

linux系统上传下载命令rz和sz的教程

这篇文章主要介绍了linux系统上传下载命令rz和sz的安装测试方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Shell编程之特殊变量的笔记小结

这篇文章主要介绍了Shell编程之特殊变量的笔记小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解Shell编程之变量数值计算(一)

本篇文章主要介绍了详解Shell编程之变量数值计算,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多