【问题标题】:FTP using Unix shell script and then triggering a task使用 Unix shell 脚本的 FTP,然后触发任务
【发布时间】:2019-05-19 15:08:54
【问题描述】:

我在 Unix 中有一个需求,我需要构建一个 shell 脚本。

要求如下:

  1. 我需要将一个文件(比如说 CSV 文件)从我的开发服务器 SFTP 到 uat 服务器。

  2. SFTP到那台服务器完成后,只要文件到了,前一个SFTP的退出码为0,我需要触发一个任务(这个任务我可以处理)。

我对 SFTP 有基本的了解,但我不知道如何在文件到达 uat 服务器后立即触发下一个任务。

请需要一个伪代码来开始我的探索。

【问题讨论】:

  • 您打算触发什么样的任务?它是代码/功能的一部分还是任何其他过程?您可以简单地为该任务创建一个函数并调用该函数。
  • 该任务是一个导入任务..我已经设置了代码。
  • 我认为您可以编写一个只包含两行的脚本:第一行调用 sftp,第二个调用您需要“触发”(启动)的任务 - 如果 sftp 成功。如果您能够在提示符下手动完成,只需在脚本中编写这两行即可。
  • 如果你hsve ssh访问,最简单的就是scp file user@server:/path/to/file && ssh user@server command /path/to/file
  • 将返回码存储在rc/variable中,然后检查返回码是否为0,然后触发你的任务。 rc= $? if [ $rc==0 ] then trigger your task (call a function or whatever) fi

标签: shell unix scripting


【解决方案1】:

如果你想从某处复制到本地机器并在本地运行命令

如果您可以访问ssh,那么它可以很容易地完成,我通常会这样做。

例如,我有一个来自我的一台服务器的备份文件。我们可以通过这种方式使用scp获取副本

scp root@server:/home/weekly.sql.zip .

. 表示将文件名放在我现在所在的这个目录中

这个命令的问题在于它有一个获取密码的交互,因此我们可以安装sshpass并以这种方式使用它:

sshpass -p'your-password' scp root@server:/home/weekly.sql.zip .

由于我们使用 bash 并且它会处理 退出代码,如果您添加和 && 运算符,那么您可以添加第二个命令,以便在第一个命令成功完成后触发。 p>

sshpass -p'your-password' scp root@server:/home/weekly.sql.zip . && unzip weekly.sql.zip

第一个任务是复制一个文件,第二个任务是解压缩它。


安装sshpass:

sudo apt install -y sshpass

如果你想从本地机器复制到某个地方并远程运行命令

sshpass -p'your-password' scp test.txt root@address:/home/ && sshpass -p'your-password' ssh root@address cat /home/test.txt

这是做什么的:

  1. 复制文件test.txt到服务器
  2. 然后通过cat命令读取

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    相关资源
    最近更新 更多