在linux桌面系统上,每次使用终端登录远程服务器时,总要手动输入 登录名、服务器地址和密码,非常麻烦,有没有快速在终端登录服务器的方法呢?有的,那就是expect自动交互脚本。
测试环境是Ubuntu18.04
1、首先安装expect
安装expect使用以下代码检测expect是否已经安装
ls /usr/bin | grep expect
如果显示为空,则使用以下命令安装
sudo apt-get install tcl tk expect
2、你可以新建一个保存自定义脚本的文件夹,方便管理,例如,在~/myscript 目录下保存自己写的脚本
mkdir ~/myscript 没有权限用sudo
3、进入该目录并通过vim新建脚本test
cd ~/myscript
vim test
4、编写expect脚本
#! /usr/bin/expect
#设置保存密码的变量
set passwd "你的密码"
#设置超时
set timeout 30
#发送登录命令(用户名+IP)
spawn ssh -l root 你的服务器IP
#判断spawn命令返回的字符串中是否有"password:"
expect "password:"
#发送密码字符串到当前进程
send "$passwd\r"
#将控制权交给用户
interact
像这样
![](https://img.haomeiwen.com/i12797436/80ba66d90c8184d5.png)
按下Esc ,输入:wq (不要忘了冒号)保存并退出
5、给脚本赋予执行权限
chmod +x test
6、执行脚本
./test 或~/myscript/test ./表示在当前目录下执行test脚本,不然系统会去环境变量中找
网友评论