如何通过SSH
找到特定目录中存在的文件例如: host1和dir / home / tree / TEST
Host2: - ssh host1 - 使用bash
查找是否存在TEST文件答案 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检查。
这对于使用临时文件名的外部系统上传非常有用:
下面的脚本:
#!/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