如何通过SSH在特定的dir中找到存在的文件

时间:2011-03-16 12:34:07

标签: bash ssh

如何通过SSH

找到特定目录中存在的文件

例如: host1和dir / home / tree / TEST

Host2: - ssh host1 - 使用bash

查找是否存在TEST文件

4 个答案:

答案 0 :(得分:9)

ssh将返回您要求它执行的命令的退出代码:

if ssh host1 stat /home/tree/TEST \> /dev/null 2\>\&1
then 
  echo File exists
else 
  echo Not found
fi

当然,您需要设置密钥验证设置,以避免密码提示。

答案 1 :(得分:7)

这是我在阅读并尝试这些内容后最终做的事情:

FileExists=`ssh host "test -e /home/tree/TEST && echo 1 || echo 0"`

if [ ${FileExists} = 0 ]
  #do something because the file doesn't exist
fi

有关测试的更多信息:http://linux.die.net/man/1/test

答案 2 :(得分:1)

Erik接受答案的延伸。

这是我的bash脚本,用于等待外部进程上传文件。这将无限期地阻止当前脚本执行,直到文件存在。

需要基于密钥的SSH访问,尽管可以很容易地将其修改为curl版本以进行HTTP检查。

这对于使用临时文件名的外部系统上传非常有用:

  • rsync
  • 传输(种子)

下面的脚本:

#!/bin/bash
set -vx

#AUTH="user@server"
AUTH="${1}"
#FILE="/tmp/test.txt"
FILE="${2}"

while (sleep 60); do
    if ssh ${AUTH} stat "${FILE}" > /dev/null 2>&1; then
        echo "File found";
        exit 0;
    fi;
done;

答案 3 :(得分:0)

不需要回声。不能比这简单得多:)

ssh host "test -e /path/to/file"
if [ $? -eq 0 ]; then
    # your file exists
fi