使用expect脚本实现telnet、ssh交互输入用户名密码
随着互联网的发展,我们可以通过各种方式远程访问和控制其他计算机。其中,telnet和ssh是两种最常用的远程登录协议。在本文中,我们将使用expect脚本实现这两种协议的交互输入用户名和密码。
首先,我们需要安装expect脚本和相关的依赖项。在终端中运行以下命令:
```
sudo apt-get update
sudo apt-get installexpect
```
安装完成后,我们可以开始编写expect脚本。以下是一个简单的示例脚本,用于实现telnet协议的登录:
```
#!/usr/bin/expect
# 设置等待期
expect -1 -s 1000
# 模拟telnet登录
send "GET / HTTP/1.1\r\nHost:example.com\r\nConnection: close\r\n\r\n"
expect "GET / HTTP/1.1"
expect "Host:example.com"
expect "Connection: close"
expect "\r\n"
# 模拟用户名和密码输入
send "username\r\npassword\r\n"
expect "username"
expect "password"
send "Enter password\r\n"
expect "Enter username\r\n"
# 发送登录请求并等待响应
send "登录成功\r\n"
expect "登录成功"
```
在这个示例中,我们首先设置了一个等待期,然后在模拟telnet登录时发送了GET请求,并等待用户名和密码的输入。最后,我们发送了登录请求并等待响应。
接下来,我们可以使用ssh协议的登录脚本。以下是一个简单的示例脚本,用于实现ssh协议的登录:
```
#!/usr/bin/expect
# 设置等待期
expect -1 -s 1000
# 模拟ssh登录
send "SSH [email protected]\r\n\r\n"
expect "SSH [email protected]"
expect "[email protected]"
expect "Enter password\r\n"
send "Enter password\r\n"
expect "Enter username\r\n"
# 发送登录请求并等待响应
send "登录成功\r\n"
expect "登录成功"
```
在这个示例中,我们首先设置了一个等待期,然后在模拟ssh登录时发送了SSH请求,并等待用户名和密码的输入。最后,我们发送了登录请求并等待响应。
最后,我们可以将这两个脚本合并为一个expect脚本,以便在多个程序之间共享。以下是一个简单的示例脚本,用于在多个程序之间共享telnet和ssh登录:
```
#!/usr/bin/expect
# 设置等待期
expect -1 -s 1000
# 设置ssh登录脚本
set ssh_script "ssh [email protected]\r\n\r\n"
# 设置telnet登录脚本
set telnet_script "expect -1 -s 1000; send \"GET / HTTP/1.1\r\nHost:example.com\r\nConnection: close\r\n\r\n"; expect \"GET / HTTP/1.1\r\nHost:example.com\r\nConnection: close\r\n\r\n"; send \"登录成功\r\n\r\n"; expect \"登录成功\r\n"
# 运行脚本
send "run./telnet_script.sh\r\n"
expect "run./ssh_script.sh"
```
在这个示例中,我们首先设置了等待期,然后在设置ssh登录脚本时指定了要发送的命令。接着,我们设置了
下一篇:在亿图图示中如何合并拆分单元格