在平时,我们使用ssh来登入服务器的时候都是这样的:
ssh @ xxx.xxx.xxx.xxx
然后等待连接,接着输入密码,这样就登入成功了。
但是,对于一个爱偷懒的程序员来说,每次都要输入ssh xxx,然后接着输入密码,而且密码还不是明文显示的,密码稍微复杂一点的话还是比较容易写出错的。
这时候就想到了expect命令,我们可以用它来处理我们的自动登入的流程,脚本如下:
#!/usr/bin/expect
set timeout 3
//①
spawn ssh root@***.***.***.***
//②
expect "*password*"
//③
send "***\r"
//④
interact
①用spawn来启动新的线程,接下来的expect和send命令都是用来和这个线程进行交互的
②expect用来匹配spawn输出是否包含password,如果有就返回,没有就等待,等待的时候是设置的timeout
③send:当expect匹配到相应的结果是,使用send命令进行发送引号之中的东西,\r用来发送enter,也就是我们输入命令之后需要按一下enter。
④interact是把控制权交给控制台,也就是交还给我们。
我们把我们这个脚本命名为login.sh,放在/usr/local/shell下,于是,我们以后登入服务器就可以使用这个命令:
sh /usr/local/shell/login.sh
这样是不是比以前方便多了,也不用担心密码输入错误,但是,这样还是有点麻烦,每次都需要输入一大串的命令。这时候,我们就想到了我们的别名,通过使用别名我们可以轻松的做到在任何页面输入自己定制的命令,在~/.bash_profile文件中加入一行命令:
alias sshTest=/usr/local/shell/login.sh
alias后面跟的是我们自定义的命令,随便输入什么都可以,保存之后再执行:
source ~/.bash_profile
之后,在任何的目录下,我们都可以使用sshTest命令来进行连接服务器操作了。
网友评论