..

基于密码的自动登录方案

虽然密码登很不安全,运维是应该禁止掉这样的登录方式。但是。。。

编写自动登录脚本

cat auto_login.sh
#!/usr/bin/expect
set user xxxx
set host localhost
set password 'xxxx'
catch {set user $env(login_user)}
catch {set host $env(login_host)}
catch {set password $env(login_passwd)}
set timeout 60
spawn ssh "$user@$host"
expect "*assword:*"
send "$password\r"
interact

这里expect是读取的环境变量中的登录用户,登录机器,登录密码,如果环境变量没有对应的变量,会使用默认值进行登录。

编写特定机器登录脚本

#!/usr/bin/env bash
env login_user=xxxx login_passwd=xxxx login_host=$(basename $0) auto_login.sh

当前脚本文件的文件名字就是你需要登录的机器,可以是域名,也可以是ip.如果我要登录的机器是blog.hellojukauy.cn。那么脚本的文件名字应该是blog.hellojukauy.cn

cat blog.hellojukauy.cn
#!/usr/bin/env bash
env login_user=xxxx login_passwd=xxxx login_host=$(basename $0) auto_login.sh

上面调用了auto_login.sh这个脚本,所以auto_login这个脚本最好是应该放在当前用户的PATH中。

修改PATH

.bashrc中添加append函数

append(){
    PATH=$PATH:$1
}

使用apppendauto_login.sh加入到PATH

append /Users/jukay/login/

更新当前环境变量,更新以后登录就能自动补全了,登录blog.hellshell.cn

source .bashrc
# 登录成功
blog.hellshell.cn

技巧

如果机器很多,并且密码都一样,不妨复制多个同样的登录脚本,文件名改成机器ip或者域名,如果密码有不一致的地方,可修改相应脚本内容。