Ram*_*hna 3 bash shell scripting scp expect
我在文本文件中有文件名列表,需要使用scp命令将每个文件传输到服务器.我正在从Read.sh读取文件名并将每个文件名传递给transfer.sh脚本,但scp没有在此传输脚本中执行命令.如果我单独运行transfer.sh并传递args它的工作正常.
LIST.TXT
/home/kittu/file1.txt
/home/kittu/file2.txt
/home/kittu/file3.txt
Run Code Online (Sandbox Code Playgroud)
Read.sh
#!/bin/bash
while read p; do
echo $p
./transfer.sh "$p"
done <List.txt
Run Code Online (Sandbox Code Playgroud)
transfer.sh
#!/usr/bin/expect -f
# get filename from command-line
set f [lindex $argv 0]
spawn scp "$f" user@192.168.4.151:/home/user/Desktop/
expect "password"
send "123\r"
interact
Run Code Online (Sandbox Code Playgroud)
我只是运行Read.sh
>./Read.sh
Run Code Online (Sandbox Code Playgroud)
输出:
/home/user/Desktop/file1.txt
spawn scp /home/mbox140/Desktop/test.sh mbox140@192.168.4.151:/home/mbox140/Desktop/videos/
user@192.168.4.151's password:
Run Code Online (Sandbox Code Playgroud)
它没有执行下一个声明.请给我任何解决方案.
尝试下面的脚本,更改是Transfer.sh包装到bash.sh中.并且它在密码中等待的原因可能是因为您期望错误的模式,尝试"密码"而不是"密码",并在发送命令之后,期望终端模式以便scp完成
#!/bin/bash
while read p; do
echo $p
{
/usr/bin/expect << EOF
spawn scp $p user@192.168.4.151:/home/user/Desktop/
expect "Password"
send "123\r"
expect "*#*"
EOF
}
done <List.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25031 次 |
| 最近记录: |