Ubuntu自动登录脚本,expect自动切换用户,xshell自动登录脚本
- 一、!/usr/bin/expect -f的意义
- 二、spawn命令行:
- 三、send命令:
- 四、expect
- 五、interact命令:
- 六、xshell自动化脚本
- 1、怎么使用脚本
- 2、编写脚本
- 3、vbs的不足
本人用xshell的SSH登录云服务器,需要从用户ubuntu切换到root,再切换到lighthouse。编辑了一个自动切换用户的脚本。
vim新建脚本文件 autologin.sh,输入以下代码:
#!/usr/bin/expect -f
set user lighthouse
set password xxxxxxxx
set timeout 5
spawn su
expect "*assword:*"
send "$password\r"
expect "*#*"
spawn su lighthouse
expect "*assword:*"
send "$password\r"
expect "*$*"
send "cd\r"
interact
然后设置autologin.sh的可执行权限。
sudo chmod 776 autologin.sh
./autologin.sh
结果如下:
一、!/usr/bin/expect -f的意义
参考资料:/usr/bin/expect介绍
如果在usr/bin中没有expect的话,用apt安装。
$ sudo apt-get install expect
二、spawn命令行:
参考资料:linux spawn命令
三、send命令:
发送相应的命令到控制台。
四、expect
接收控制台信息,判断是否满足条件。
五、interact命令:
执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。
六、xshell自动化脚本
xshell具有脚本功能,可以实现很多自动化的操作。
1、怎么使用脚本
首先打开Xshell软件,找到工具选项卡–>脚本–>运行,此时会弹出打开需要运行的脚本文件对话框。
2、编写脚本
可以参照软件自带的示例,或者官网示例编写脚本。我这里用的是vbs格式。示例如下:
Sub Main
xsh.Screen.Synchronous = true '使窗口显示与当前输出同步
xsh.Screen.WaitForString "ubuntu@VM-4-13-ubuntu:~$" ' 等待目标设备发回 "xxxx ttyS0" 字符串
xsh.Sleep 500 ' 等待0.5s
xsh.Screen.Send "./autologin.sh" & VbCr ' 发送"xxxxxx" 字符串和回车
'参考文献:https://blog.csdn.net/qlexcel/article/details/120468358
End Sub
参考文献:
- Xshell脚本学习
- xshell自动化脚本
3、vbs的不足
vbs不支持#、?通配符(也可能是我的xshell版本问题)。javascript、python语言的脚本没有试过,可能支持通配符。