服务器sh脚本自动登录(mac)

时间:2023-01-28 20:59:11

  一不小心自己也有三台虚拟机了,每次都ssh -username@ip 然后在输入密码着实蛋疼,第一反应时脚本登录,但是作为脚本是逐行执行命令,是无法做到等待一个密码提示出现在输入密码的。查到mac下可以通过expect(具体是spawn,expect,send三条功能),win类似也有expect工具。感觉应该是个运维技巧。

  ok,安装expect,根据INSTALL,README,要装expect现状tcl(另一个包),http://www.tcl.tk/software/tcltk/download.html,tcl的话解压出来我直接进入的unix目录下,因为macosx下README说mac下当成unix装也没啥事,而且我在macosx下make不过是什么鬼。。。安装没什么注意的,./configure  make makeinstall is enough。装完tcl记得看下安装的路径,我的是在/usr/local/lib/。

  之后再下载expect包,https://sourceforge.net/projects/expect/files/Expect/5.45/。这里解压之后放到tcl一起,我的话即/usr/local/lib/,然后make时候make expect说是可以只装expect相关组件,难道还有别的???,不管,我直接make之后install了。

  然后我们就具备了expect的主要功能了。

  代码如下:

#!/usr/bin/expect -f     /usr/bin/expect这个路径安装完expect之后 which expect可以查看
set timeout -
set password bugaosuni spawn ssh myname@serverip expect "*assword:*" // 等待密码提示显示
send "$password\r" // 登录 interact //done

然后很受伤的是这个脚本已经不能当普通sh来执行了。得用expect 命令执行。具体就是  expect    myLogon.sh 。期间若是不可执行 chmod +x myLogon.sh。

服务器sh脚本自动登录(mac)

OK 用户密码都在logon.sh里面了。