3

对不起,如果这是太简单的问题。但我是 Java 开发人员,对 shell 脚本一无所知。我用谷歌搜索,但找不到我要找的确切内容。

我的要求

  1. 使用 Sftp [基于 pub/pri 密钥的身份验证] 连接到远程服务器。指向私钥文件的变量
  2. 将具有特定扩展名 [.log] 的文件传输到本地服务器文件夹。用于设置远程服务器路径和本地文件夹的变量
  3. 重命名远程服务器中传输的文件
  4. 将所有传输的文件记录在 .txt 文件中

任何人都可以给我这个shell脚本吗?

到目前为止,这是我从建议中得出的。还有一些问题留在我身边;)

export PRIVKEY=${private_key_path}
export RMTHOST=user@remotehost
export RMTDIR=/logs/*.log
export LOCDIR=/downloaded/logs/
export LOG=sucess.txt

scp -i $PRIVKEY $RMTHOST:$RMTDIR $LOCDIR
for i in 'ls -1 $LOCDIR/*.log'
do
   echo $i >> $LOG
done

ssh $RMTHOST -c "for i in `ls -1 $RMTDIR; do mv /logs/$i /logs/$i.transferred; done"
4

2 回答 2

4

这种方法怎么样?

  1. 使用 Sftp [基于 pub/pri 密钥的身份验证] 连接到远程服务器。指向私钥文件的变量
  2. 将具有特定扩展名 [.log] 的文件传输到本地服务器文件夹。用于设置远程服务器路径和本地文件夹的变量
scp your_user@server:/dir/of/file/*.log /your/local/dir
  1. 将所有传输的文件记录在 .txt 文件中
for file in /your/local/dir/*.log
do
   echo "$file" >> $your_txt
done
  1. 重命名远程服务器中传输的文件
ssh your_user@server -c "for file in /dir/of/file/*.log; do mv /dir/of/file/"$file" /dir/of/file/new_name_based_on"$file"; done"
于 2013-03-08T10:05:13.343 回答
1

使用 scp(secure copy) 命令传输文件。您可能还需要添加 -C 开关,用于压缩文件。这可以加快速度。即将file1从server1复制到server2,

在服务器 1 上:

#!/bin/sh
scp -C /home/user/file1 root@server2.com:/home/user

编辑:

#!/bin/sh
scp -i {path/to/pub/pri/key/file} /home/user/file1 root@server2.com:/home/user
于 2013-03-08T10:00:33.550 回答