使用bash脚本自动化telnet会话
我正在使用Bash脚本来自动化一些与telnet相关的任务。一旦自动化,用户与telnet之间将不会进行任何交互。(这将是完全自动化的)
脚本看起来像这样:
# execute some commands on the local system# access a remote system with an IP address: 10.1.1.1 (for example)
telnet 10.1.1.1
# execute some commands on the remote system
# log all the activity (in a file) on the Local system
# exit telnet
# continue on with executing the rest of the script.
我在这里面临2个问题:
- 如何从脚本(无需人工干预)在远程系统上执行命令?
根据我对一些测试代码的经验,我可以推断出在执行 telnet 10.1.1.1
时,telnet进入了一个交互式会话,并且脚本中的后续代码行在本地系统上执行。如何在远程系统而不是本地系统上运行代码行?
- 我无法在本地系统的telnet会话中获得有关该活动的日志文件。我使用的stdout重定向在远程系统上进行复制(我不想执行复制操作以将日志复制到本地系统)。如何实现此功能?
回答:
编写expect
脚本。
这是一个例子:
#!/usr/bin/expect#If it all goes pear shaped the script will timeout after 20 seconds.
set timeout 20
#First argument is assigned to the variable name
set name [lindex $argv 0]
#Second argument is assigned to the variable user
set user [lindex $argv 1]
#Third argument is assigned to the variable password
set password [lindex $argv 2]
#This spawns the telnet program and connects it to the variable name
spawn telnet $name
#The script expects login
expect "login:"
#The script sends the user variable
send "$user "
#The script expects Password
expect "Password:"
#The script sends the password variable
send "$password "
#This hands control of the keyboard over to you (Nice expect feature!)
interact
跑步:
./myscript.expect name user password
以上是 使用bash脚本自动化telnet会话 的全部内容, 来源链接: utcz.com/qa/413462.html