前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux学习第六十九篇:分发系统介绍,expect脚本远程登录,expect脚本远程执行命令,expect脚本传递参数

linux学习第六十九篇:分发系统介绍,expect脚本远程登录,expect脚本远程执行命令,expect脚本传递参数

作者头像
用户1215343
发布2018-03-29 11:45:50
1.5K0
发布2018-03-29 11:45:50
举报
文章被收录于专栏:linux运维学习linux运维学习

分发系统介绍

expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令。当然若是使用不带密码的密钥验证同样可以实现自动登录和自动远程执行命令。但当不能使用密钥验证的时候,我们就没有办法了。所以,这时候只要知道对方机器的账号和密码就可以通过expect脚本实现登录和远程命令。

expect脚本远程登录

  • yum install -y expect
  • 自动远程登录
代码语言:javascript
复制
#! /usr/bin/expect
set host "192.168.85.132" #要远程登录的机器IP
set passwd "123456" #远程登录的机器密码
spawn ssh root@$host #登录机器的语句
expect {
"yes/no" { send "yes\r"; exp_continue} #初次登录时需要输入yes才能进入
"password:" { send "$passwd\r" } #当在远程登录时出现password:时自动输入密码
}
interact #作用:表示需要停留在远程的机器上,不需要退,如果不加就会退出来
         #如果是 expect eof 就会在机器上停留一两秒后退出来 
这里写图片描述
这里写图片描述

expect脚本远程执行命令

  • 自动远程登录后,执行命令并退出
代码语言:javascript
复制
#!/usr/bin/expect
set user "root"
set passwd "123456"
spawn ssh $user@192.168.133.132

expect {
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
expect "]*" 
send "touch /tmp/12.txt\r"
expect "]*"
send "echo 1212 > /tmp/12.txt\r"
expect "]*"
send "exit\r"
  • expect “]*” 表示图中括号里的,表示当检测到这个符号时就执行我们要执行的命令
这里写图片描述
这里写图片描述

远程登录机器执行命令后退出

这里写图片描述
这里写图片描述

远程的机器执行命令后创建的文本和内容

这里写图片描述
这里写图片描述

expect脚本传递参数

  • 传递参数
代码语言:javascript
复制
#!/usr/bin/expect
set user [lindex $argv 0] #把第一个参数的值赋给user
set host [lindex $argv 1]
set passwd "123456"
set cm [lindex $argv 2]
spawn ssh $user@$host

expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect "]*"
send "$cm\r"
set timeout -1 #-1表示永远不超时,1表示1秒,2表示2秒....,表示执行命令几秒后停止
expect "]*"
send "exit\r"
这里写图片描述
这里写图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分发系统介绍
  • expect脚本远程登录
  • expect脚本远程执行命令
  • expect脚本传递参数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档