【发布时间】:2014-11-03 17:20:21
【问题描述】:
我有一个文本文件中的文件名列表,需要使用 scp 命令将每个文件传输到服务器。我正在从 Read.sh 读取文件名并将每个文件名传递给 transfer。 sh 脚本,但 scp 未在此传输脚本中执行命令。如果我单独运行 transfer.sh 并传递 args 它工作正常。
List.txt
/home/kittu/file1.txt
/home/kittu/file2.txt
/home/kittu/file3.txt
Read.sh
#!/bin/bash
while read p; do
echo $p
./transfer.sh "$p"
done <List.txt
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
我只是运行 Read.sh
>./Read.sh
输出:
/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:
它没有执行下一条语句。请给我建议任何解决方案。
【问题讨论】:
-
你试过独立运行 transfer.sh 吗?并且在 transfer.sh 中,interact 命令应该抛出错误,因为您正在尝试与关闭的进程(在本例中为 scp )进行通信
-
@Ram 是的,转移作为独立工作。
标签: bash shell scripting expect scp