有个vps机器,每次登录命令如下:
ssh -l root ip 或者 ssh root@ip
password:
输入密码,回车就登录了。
比较麻烦,每次都得现找ip和密码。所以可以考虑编写自动shell脚本自动执行。
要用到expect工具,所以
首先查看机器是否装有expect,mac默认就有,执行:
whereis expect
或者
which expect
得到结果通常是: /usr/bin/expect
故编写我们的自动登录脚本第一行:
注意!!!这里的脚本要用代码编辑器进行创建并编辑,尽量不要用文本编辑器和命令行编辑!!!否则可能会出现执行时乱码报错且很难找到原因!
#!/usr/bin/expect
##命令登录ssh 用户名@ip
spawn ssh root@xxx.xxx.xxx.xxx
##这里是执行上一步后希望出现的文字提示,通常是密码输入提示
expect "**password:"
##利用send命令,发送你的server密码并回车即可
send "yourpassword\r"
##最后加上允许交互的命令
interact
至此,运行这个sh文件就可以实现自动登录远程server了。
但是我们还可以更简单一些,通过快捷命令直接登录,需要用到就是alias。
在你的bash配置文件(我的bash是zsh,所以是~/.zshrc文件,可以执行
echo $SHELL
来查看你当前的bash工具
)中加入以下命令:
alias sshlogin='刚才自动登录sh文件路径'
然后source一下这个文件让修改生效即可。
source ~/.zshrc
这样在命令行,直接运行sshlogin就可以自动执行登录文件,十分方便。
如果你还想登陆之后,自动在远程主机上执行一些命令,比如自动进入某个目录什么的,你可以继续用send命令发送你想执行的指令。
如有错误,敬请指正~