如何找到通过SSH如何找到一个文件存在于特定的目录通过SSH
例如在特定的目录文件存在: host1和目录的/ home /树/ TEST
主机2: - SSH主机1 - 找到测试文件存在与否使用bash
如何找到通过SSH如何找到一个文件存在于特定的目录通过SSH
例如在特定的目录文件存在: host1和目录的/ home /树/ TEST
主机2: - SSH主机1 - 找到测试文件存在与否使用bash
SSH将返回命令的退出代码,你问它来执行:
if ssh host1 stat /home/tree/TEST \> /dev/null 2\>\&1
then
echo File exists
else
echo Not found
fi
你需要有关键authe当然,你可以通过设置认证来避免密码提示。
我喜欢使用'test -e'或'test -f'使其变成:'ssh host1 test - e/home/tree/TEST && echo File exists ||回声未找到。 – 2011-03-16 12:56:29
ssh host bash -c'你的单行shellcript' – Erik 2011-03-16 13:30:59
这是我最后的阅读后做什么,在这里尝试的东西:关于测试
FileExists=`ssh host "test -e /home/tree/TEST && echo 1 || echo 0"`
if [ ${FileExists} = 0 ]
#do something because the file doesn't exist
fi
的扩展,埃里克的接受的答案。
这是我的bash脚本,用于等待外部进程上传文件。这会在文件存在之前无限期地阻止当前的脚本执行。
需要基于密钥的SSH访问,虽然这可以很容易地修改为curl版本以通过HTTP进行检查。
这是通过使用临时文件名外部系统上传有用:
脚本如下:
#!/bin/bash
set -vx
#AUTH="[email protected]"
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;
无需回声。不能简单得多:)
ssh host "test -e /path/to/file"
if [ $? -eq 0 ]; then
# your file exists
fi
你想在应用程序中使用吗?需要布尔值,或者你可以简单地使用ls命令来检查 – 2011-03-16 12:38:16
是的我想在应用程序中使用它并且我需要布尔值 – Tree 2011-03-16 12:39:45