我想测试远程 Linux 服务器上某个文件是否存在(例如 /var/run/test_daemon.pid),而无需以交互方式登录服务器。例如,您可能希望脚本根据远程服务器上是否存在特定文件而采取不同的行为。
答案1
如果你确切知道文件的位置,则以下命令将执行
ssh user@remote_server test -f /path/to/file/filename && echo "YES" || echo "no"
您需要以 开头的部分,&&
因为测试不会产生任何输出,并且您无法判断是否已找到该文件。
否则,如果你只知道文件的名称,但不确定它在哪里,
ssh user@remote_server find / -type f -name 'name_of_file*' -print
将在整个文件系统中搜索您的文件。
注意 ssh 的使用:它连接到远程服务器,执行表达式后面的命令user@remote_server
,但不会打开交互式会话:控制权将返回到本地 PC 上的 shell。
答案2
if [[ "`ssh -q user@hostname ls /dir/filename.abc 2>dev/null`" == "/dir/filename.abc" ]]
then
echo "file exists"
else
echo "file does not exist"
fi