Unix命令检查另一台服务器上是否存在文件?

时间:2014-03-19 10:59:32

标签: shell unix scripting

我正在从配置文件中读取文件名列表。使用for循环我选择列表中的每个文件,然后想要在远程服务器上搜索文件。

for file in config
do

**search for file at {remoteserver}**
    returnStatus=$?
    if [ returnStatus = 0 ]; then
         email that file was found.
    fi
done  

在远程服务器上搜索文件是困扰我的部分。任何帮助表示赞赏,

2 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

for file in "${config[@]}"
do
    ssh user@remotehost test -e "$file"
    returnStatus=$?
    if [ $returnStatus -eq 0 ]; then
         email that file was found.
    fi
done  

答案 1 :(得分:1)

假设

  1. 所有文件都在不同的服务器上
  2. 您想从本地系统发送电子邮件
  3. 这可能是解决方案:

    for file in "${config[@]}"
    do
        exists=$(ssh user@host "if [ -e \"$file\" ]; then echo '1'; else echo '0'; fi")
        if [ $exists = "1" ]
        then
            echo "$file exists"
            #send email
        fi
    done
    

    如果所有文件都在同一个远程服务器上,那么在ssh连接中进行循环会更有意义,而不是每次都重新连接。