自动登录linux服务器

174 阅读1分钟

背景

   在linux服务器上进行开发时,往往需要进行密码登录,甚至有的需要先登录堡垒机,再登录开发机,
   输入过程较为繁琐,因此考虑把登录命令写在脚本中,进行自动化登录。

方法

   ssh登录是一个交互的过程,且没有特定的参数指定密码的输入方式,因而不能用管道、重定向的方式实现。
   这种情况可以使用expect包进行自动登录功能的实现。
  
   expect是一个用来处理人与程序交互的包,可以将交互过程用程序实现,适用于做ssh自动登录。
   可以使用whereis命令查看是否安装了expect,如果没有的话,可以自行使用包管理工具进行安装。
   安装命令 yum install expect  # 有的时候需要root权限,及sudo yum install expect  
   自动登录脚本的编写如下:
  
   脚本名称 sandbox_sign_in.exp    注意是以.exp为后缀的文件,因为需要expect命令来执行
  
   #!/usr/bin/expect
   set timeout 20 
   spawn ssh username@host
   expect "*password:"
   send "password\r"
   interact
   expect eof
  
   第一行注释指定了使用expect执行,
   第二行设置超时时间为20秒,
   第三行spawn为expect执行命令的关键字,
   第四行expect表示交互获取的内容是否包含”password:”字符串,
   第五行表示将输入内容发送过去(加了个\r表示回车),
   第六行:interact代表执行完留在远程控制台,不加这句执行完后返回本地控制台。
   第七行:expect执行结束,退出
   
   将这个脚本命名存在本地,在保存的路径下,执行expect sandbox_sign_in.exp 即可实现自动登录.