使用shell脚本SFTP文件操作(SFTP file manipulation using she

2019-10-18 19:53发布

有没有人尝试过使用shell脚本基本上在SFTP服务器访问和操作文件,这是我必须做的:1.打开SFTP,通过所有.txt文件访问指定的目录2.循环3.每个.txt文件的读取文件名和只获取文件/ s的包含/ S 'XX' 的子串(即喂-XX.txt)4.通过追加一个 '-OK' 字符串重命名文件(iehello-XX-OK.txt)

感谢您的投入。

Answer 1:

您可以编写脚本SFTP带有“这里文件”( <<EOF ,按规定这里 ),但你不能在SFTP脚本中使用shell脚本类原语(一拉的bash)。

也许尝试基于SSH协议的脚本,而不是,如果你有SSH访问。



Answer 2:

在你的描述没有什么需要你SFTP服务器上运行的任何逻辑。 您可以使用SFTP命令刚刚得到的数据,并在本地做代加工,如:

for file in $(echo 'ls -1' | sftp blah | tail -n +2); do
  # do stuff
done


Answer 3:

这就是期待是。 大致:

#!/PATH/TO/expect -f
spawn sftp host
expect -re "Username:"
send -- "MYUSER\r"
expect -re "Password:"
send -- "PASSWORD\r"
expect -re "ftp>"
send -- "cd mydir\r"
expect -re "ftp>"
send -- "get myfile\r"
...


Answer 4:

让我们用Perl为:

#!/usr/bin/perl
use Net::SFTP::Foreign;
$sftp = Net::SFTP::Foreign->new($host, user => $user, autodie => 1);
$sftp->setcwd($dir);
$sftp->mget("*XX*.txt", $local_dir);


Answer 5:

下面是我的工作得到了我自己的目的出发点。 我使用sshpass使得密码可以指定,但你应该可以,如果你有正确交换的RSA公钥除去额外的感伤。

#!/bin/bash

function sftpexec()
{
    (SSHPASS="password" sshpass -e sftp user@server | tail -n +2) << !
$1
!
}

FILES=$(sftpexec ls)
echo $FILES

这是什么会做的是列出所有在启动目录的服务器上的文件。



文章来源: SFTP file manipulation using shell script
标签: shell sftp