expect脚本实现ssh自动登录远程服务器

使用 expect 脚本可以实现 SSH 自动登录远程服务器。下面是一个简单的示例:

首先,需要安装 expect 软件包,可以在 Ubuntu 或其他 Linux 发行版中使用以下命令安装:

1 sudo apt-get update
2 sudo apt-get install expect

然后,编写 expect 脚本,该脚本将模拟 SSH 连接远程服务器并登录。以下是一个简单的示例脚本:

 1 #!/usr/bin/expect
 2 
 3 set timeout 10  
 4 set user "username"  
 5 set pass "password"
 6 
 7 spawn ssh user@remoteserver.com  
 8 expect "password:"  
 9 send "$pass\r"
10 
11 expect "Login successful.*Organization:"  
12 send "echo \"Welcome, $user\" | sudo -S command\r"
13 
14 expect eof  

在这个脚本中,我们使用 expect 脚本语言模拟了 SSH 连接远程服务器的过程。首先,我们设置超时时间为 10 秒,这意味着如果用户在 10 秒内没有输入密码,脚本将退出。

然后,我们设置用户名和密码,以便在连接远程服务器时进行身份验证。

接下来,我们使用 spawn 命令启动 SSH 客户端,并使用 expect 命令模拟 SSH 连接的过程。在连接成功后,我们使用 send 命令发送命令到远程服务器,然后使用 expect 命令模拟服务器响应的过程。

最后,脚本使用 eof 命令退出 expect 环境,这将关闭 SSH 连接并允许脚本继续执行其他任务。

将上述脚本保存到一个文件中,例如 auto_login.exp,并在终端中执行以下命令来测试脚本:

chmod +x auto_login.exp  
./auto_login.exp  

如果一切正常,你应该能够在终端中看到类似于以下输出:

Welcome, username  
Login successful.*Organization:  
Welcome, username  

这意味着脚本已经成功登录远程服务器。

 

 

 

 

参考资料

https://blog.csdn.net/ver_mouth__/article/details/124225027

 

posted @ 2023-05-10 23:14  jarsing  阅读(951)  评论(1编辑  收藏  举报