远程登录服务器,每次都要输命令-复制粘贴密码-切换目录,非常麻烦,于是上网查了一下有没有自动登录的脚本,果然有,研究了一下,使用很方便。
脚本使用的shell不是bash,而是expect。之前我们都是直接把一堆命令写在脚本里,但是如果遇到交互式的命令,比如ssh,telnet等就没有办法了,expect正是为了满足交互式命令的自动化处理。
在使用前,先需要安装tcl和expect,centos下,直接
sudo yum install tcl expect
也可以去官网下载压缩包,解压,然后编译安装。
下载完就可以使用了,具体expect的语法很丰富,网上也有很多文章讲的很详细。
对于ssh登录,我的简单三行脚本就搞定了。
!#/usr/bin/expect
set timeout 10
spawn ssh root@xx.xx.xx.xx -p xxxx
expect {
"*password*" {send "ur password"}
}
interact
spawn是我们需要执行的命令
expect可以理解为接受远程服务器与我们交互所发送的信息,比如让我们输入password,在字符串前面加上-re,表示用正则匹配
send则可以理解为发送需要的信息给远程服务器。
interact执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远 程终端上。如果你只是登录过去执行一段命令就退出,可改为 expect eof