【问题标题】:Basic bash script with sftp带有 sftp 的基本 bash 脚本
【发布时间】:2013-07-25 22:08:41
【问题描述】:

我正在尝试制作一个调用 sftp 的简单 bash 脚本。

在交互模式下,每当用户对文件使用“放置”时,我想在该文件上回显一些元数据信息。

我正在 tldp.org 上阅读 Bash Guide for Beginners,但我很清楚如何编写 if 语句来检查用户何时点击“put”命令。

谢谢。

编辑:添加了一些基本代码和详细说明。

#!/bin/bash

sftp 133.43.453.132 # I made up this IP for demonstration purposes
while True
do
if [user uses 'put' to a transfer a file to remote server] # New to bash so I don't know how to express this.
    then
        echo "Random stuff"
fi
done

所以基本上,我该如何写这个 if 条件?

【问题讨论】:

  • 请展示你目前拥有的东西
  • 一般来说,你不会。也就是说,很难使用 bash 脚本来控制另一个命令,同时允许用户与之交互。有一个名为 expect 的工具可以做这种事情,但用它做任何复杂的事情都不是一件容易的事。
  • 感谢您的评论。我想这样做是因为每当用户使用 put 将文件放在服务器上时,我希望 put 回显该文件的一些元数据。那我应该怎么做呢?我不熟悉 bash,所以我不知道表达这一点的最佳方式。

标签: bash shell sftp


【解决方案1】:

一种天真的方法可能是

#!/bin/bash
sftp 133.43.453.132 | tee /dev/tty |
while read prompt command argument1 rest
do
    case $command in put) echo "Random stuff";;
    esac
done
  • 要考虑命令行编辑或输出排序等问题,至少需要一个比tee /dev/tty 更复杂的过滤器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 2021-01-15
    • 1970-01-01
    • 2022-06-15
    • 2012-07-29
    • 2015-06-07
    相关资源
    最近更新 更多