繁体   English   中英

在Expect脚本之前和之后使用bash命令

[英]Using bash commands before and after an expect script

简而言之,我想输入脚本的名称,该脚本的名称将提示用户输入跳转框的主机名,登录名和密码,然后该脚本将运行一系列命令,例如ping设备,将scp文件发送到其他主机等等。目前,我只运行了一个简单的ls -lrt脚本。

但是,当我运行脚本时,一切都可以正常登录,但是一旦我进入主机,脚本便会结束。 我希望了解如何在登录后停止脚本,以便随后可以从脚本中运行新命令。

我在这里浏览了一系列页面,但没有发现真正的内容。

#!/bin/bash
echo -n "Logging in to server at HOSTNAME"
echo
echo -n "Hostname:"
read -s host
echo
echo -n "Username:"
read -s user
echo
echo -n "Password:"
read -s PWD
echo

/usr/bin/expect <<EOF
set timeout 1
spawn ssh $user@$host
expect "password:"
send "$PWD\n"
expect eof


ls -lrt

这是我得到的结果:

Logging in to server at
Username:
Password:
spawn ssh user@host
user@host's password:

-bash-4.1$ home/Desktop:~ userid$

home / Desktop:〜userid $是跳转框之外的提示,返回我的会话窗口。

您的expect语法似乎不正确。 根据您的查询,您希望将文件scp到远程主机,无论如何,我可以通过以下语法为您提供帮助:

/usr/bin/expect <<EOF
set timeout -1
spawn /usr/bin/sftp ${user_name}@${HOSTNAME}
expect "password:"
send "${passwd}\r"
expect "sftp>"
send "cd /the_path/to_put_files/\r"
expect "sftp>"
send "mput *\r"
expect "sftp>"
send "bye\r"
EOF

ls -lrt

set timeout -1 ==用于在没有超时限制的情况下向远程服务器发送n个文件。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM