但是,当我运行脚本时,一切都可以正常登录,但是一旦我进入主机,脚本便会结束。我希望了解如何在登录后停止脚本,以便随后可以从脚本中运行新命令。
我在这里浏览了一系列页面,但没有发现任何关于此的内容。
#!/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 $是跳回跳转框之外的会话窗口的提示。
答案 0 :(得分:0)
您对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个文件发送到远程服务器,而没有超时限制。
希望这会有所帮助。