我无法将文件名从unix中的SFTP目录复制到文本目录中(发送“ls-lt*.csv”gt;${反馈文件列表}\r";)
我想用我无法将文件名从unix中的SFTP目录复制到文本目录中(发送“ls-lt*.csv”gt;${反馈文件列表}\r";),unix,expect,Unix,Expect,我想用发送“ls-lt*.csv>${FEEDBACK\u FILE\u LIST}\r”将所有.csv文件移动到$FEEDBACK\u FILE\u LIST中。它不会抛出任何错误,也不会将任何文件移动到本地目录$FEEDBACK\u FILE\u LIST中 请帮帮我 编辑: 我想将文件列表放入本地目录.PFB expect<<EOD spawn /usr/bin/sftp -o Port=22 ${USER}@${HOST_NAME} expect "password:"
发送“ls-lt*.csv>${FEEDBACK\u FILE\u LIST}\r”将所有.csv
文件移动到$FEEDBACK\u FILE\u LIST
中。它不会抛出任何错误,也不会将任何文件移动到本地目录$FEEDBACK\u FILE\u LIST中
请帮帮我
编辑:
我想将文件列表放入本地目录.PFB
expect<<EOD
spawn /usr/bin/sftp -o Port=22 ${USER}@${HOST_NAME}
expect "password:"
send "${PASSWD}\r"
expect "sftp>"
send "ls -la *.csv > ${FEEDBACK_FILE_LIST}\r"
expect "sftp>"
send "bye\r"
EOD
expect你几乎没有选择,最好的是下一个。使用
ssh host@remote "ls -lt /directory/of/log/*.csv" > $FEEDBACK_FILE_LIST
假设$FEEDBACK\u FILE\u LIST
是您机器上的一个文件。如果您想为此设置cron作业,并且完全确定要执行此操作!!!!你可以这样做
ssh host:password@remote "ls -lt /directory/of/log/*.csv" > $FEEDBACK_FILE_LIST
这样,您就不会收到输入密码的提示,这对cron作业非常有用,但请注意,打开脚本文件的任何人都可以看到密码。把它写在别的地方也没用,因为它很容易被追踪到
如果不需要将其作为cron作业,可以在中执行类似操作。bashrc
:
function getlogs() {
ssh username:$1@hostname "ls -lt /directory/of/log/*.csv" > $FEEDBACK_FILE_LIST
}
然后你就可以在终点站做了
getlogs password
这就是我要做的。在远程目录(SFTP)中,我们不应该删除,实际上我们要做的是将.csv文件从SFTP目录复制到本地目录。因此,我们将文件复制到varaible($FEEDBACK\u FILE\u LIST/)中。我可以查看日志中的文件列表,但不能移动到本地目录。ls-la*.csv>/***/***/***/log/9006_feedback_files_list.txt-->feedback_FILE_list谢谢,但是我们不能在远程目录(SFTP>)中使用scp命令。我的意思是我想把文件列表放到本地目录中。PFB..当然,你只需要一个文件列表,不复制文件?是的,我想将文件列在本地目录中,但这不会发生。你能帮我吗?没问题。只要让我知道这是一个一次性的工作或应定期完成。所以我可以提供更好的答案