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

分发系统介绍

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

expect脚本远程登录

  • yum install -y expect
  • 自动远程登录
#! /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脚本远程执行命令

  • 自动远程登录后,执行命令并退出
#!/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脚本传递参数

  • 传递参数
#!/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"

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏电光石火

EMLOG无插件实现网站源码压缩

在以往的Emlog优化教程中,相信都是使用的代码压缩插件,今天主要是分享插件的代码版本,也就是不使用插件,直接将代码丢在module.php中就可以,好吧,又消...

2685
来自专栏FH云彩

一招教你在安卓Chrome查看网页源代码

4K4
来自专栏Linux驱动

39.Linux应用调试-strace命令

1.strace简介 strace常用来跟踪进程执行时的系统调用和所接收的信号。通过strace可以知道应用程序打开了哪些文件,以及读写了什么内容,包括消耗的时...

2136
来自专栏pangguoming

使用 nvm 管理不同版本的 node 与 npm

使用 nvm 管理不同版本的 node 与 npm 补充说明:Mac 下通过 brew install nvm 所安装的 nvm ,由于安装路径不同,无法正确启...

5597
来自专栏移动端周边技术扩展

github中存放预览网页

831
来自专栏云上大文件传输

镭速2.0版本全新功能-邀请上传

如果你的朋友有一些文件或照片需要传给你,在镭速2.0版本里,你可以使用“邀请上传”来快速简便的实现这个功能。

48810
来自专栏喵了个咪的博客空间

PhalApi-RabbitMQ基于PhalApi专业队列拓展

PhalApi-RabbitMQ基于PhalApi专业队列拓展 ? 前言 RabbitMQ一直都是队列中的标杆,这次有幸PhalApi也能啃上RabbitMQ真...

3147
来自专栏Timhbw博客

Centos安装PHP的IMAP模块

2017-04-1612:32:42 发表评论 353℃热度 学习记录一些 Linux 上的东西: ? 1.首先 ssh 连接上你的服务器:然后执行以下代码:...

3214
来自专栏Pythonista

nginx负载均衡实验

1141
来自专栏屈定‘s Blog

Maven子模块打包后拷贝目标文件到父模块

看着这个标题一定想怎么会有这么奇怪的需求…. 嗯,我也认为这个是很奇怪的需求,但实际上确实存在.

8083

扫码关注云+社区

领取腾讯云代金券