将一个txt文件从Unix机器复制到Windows机器

时间:2013-03-13 07:09:12

标签: shell unix

我有以下shell脚本将txt文件从Unix机器复制到同一网络中的Windows机器上:

#!/bin/sh
HOST='localhost'
USER='redacted'
PASSWD='redacted'
FILE='/los_prod/scripts/log.txt'

ftp $HOST <<END_SCRIPT
user $USER
$PASSWD
put $FILE
quit
END_SCRIPT
exit 0

它将错误描述为:

  

:连接失败。

我在脚本中提供了所有正确的信息。可能是什么原因?

2 个答案:

答案 0 :(得分:1)

你可能想看看这里: http://www.stratigery.com/scripting.ftp.html

它提供了一种简单的方法来做你想做的事。

答案 1 :(得分:0)

ftp不接受来自stdin的输入,因此您无法像这样提供登录信息。您需要使用expect之类的程序来自动执行普通的ftp命令行客户端。更好的选择可能是使用另一种语言而不是Bourne shell脚本。像Perl(由@sarathi提到),Ruby或Python之类的东西可以让你编写一个相当小的脚本并使用它们可用的FTP库来更轻松地编写脚本。

以下是expect脚本的一个版本:

set host "localhost"
set user "redacted"
set pass "redacted"
set file "/los_prod/scripts/log.txt"

spawn ftp $host
expect "Name"
send "$user\n"
expect "Password:"
send "$pass\n"
expect "ftp>"
send "put $file\n"
expect "ftp>"
send "quit\n"

您可能需要在系统上安装expect;它并不像其他口译员那样广泛使用。任何现代Linux发行版都会有一个包。