刚入职新公司,公司的开发环境在服务器上,经常需要ssh登录,每次都得输入
ssh username@192.168.200.10
//然后输入密码
password
这个过程经常重复进行。
有一个办法,就是定义一个命令lg
输入 vi .bash_profile
添加一条记录
alias lg='ssh username@192.168.200.10'
这样就可以了,每次只需要输入lg就可以了。
但是,还是得输入密码。每次输入密码也是挺麻烦的。还有没有别的办法呢?答案当然是有!
我们编写一个shell脚本,然后把lg定义为运行这条脚本。下面先编写脚本,vi sshlogin
#!/usr/bin/expect -f
set password "123456"
set timeout -1
spawn ssh yanbo@192.168.200.10
expect "*assword:*"
send "$password\r"
expect "Last*"
interact
上面就是shell代码了,我们来一行一行解释一下。
set 就是定义变量,这里我们把password和timeout定义一下。
spawn是进入expect环境后才可以执行的expect内部命令
expect是等待一个条件,如果没有这一句,那么脚本会直接退出。
send是发送命令,就是用它来代替我们的输入。
需要注意的是interact,这个是必须的,如果没有这一句,ssh登录成功后是无法进行交互的。
ok,下面我们运行./sshlogin看一下结果
没问题之后,vi .bash_profile把lg改成sshlogin的路径
alias lg='/Users/yizhe/mybin/sshLogin'
哦了,以后,需要登录ssh的时候,只需要敲一个lg就哦了。瞬间切换到服务器上。有木有比较吊呢?嘎嘎~~