bash - 在 bash 中检查 ssh 远程命令的退出状态

标签 bash ssh

我需要检查交易文件是否已在远程主机上发布。今天(12 月 31 日)没有发布交易代码。 我肯定知道这一点。昨天有一个。然而,无论我使用哪个日期,30 还是 31,返回码都是相同的。

我要检查的是 ssh 的返回状态,我认为应该是远程执行命令的返回状态 我认为如果“ls -ltr”有效且大于零,“if 语句”将以 0 退出,如果“ls -ltr”无效,则“if 语句”将以 0 退出。 工作。我认为“if”语句会查看 shh 的返回状态,这应该是远程的返回状态 执行的命令 - 或“ls -ltr”

我如何让他工作?

这是针对 30 - 它位于远程主机上,并且成功

casper@host:/scripts$ ssh -q -T user@capserbox "ls -ltr  /home/DropBox/transactions_20141230.csv"
-rw-r--r--   1 rr_prd    2233047 Dec 31 07:26 /home/DropBox/transactions_20141230.csv

这是针对 31 的,目前还没有 31 的报告,所以不成功

casper@host:/scripts$ ssh -q -T user@capserbox "ls -ltr  /home/DropBox/transactions_20141231.csv"
/home/DropBox/transactions_20141231.csv not found
casper@host:/scripts$

我用注释掉标签翻转日期

casper@host:/scripts$ ssh -q -T user@capserbox "ls -ltr  /home/DropBox/transactions_20141231.csv"
/home/DropBox/transactions_20141231.csv not found
casper@host:/scripts$



#!/bin/bash
today=$(/bin/date +%Y%m%d)
#today="20141230"
echo $today
if ssh -q -T user@capserbox "ls -ltr  /home/DropBox/transactions_$today.csv" > /dev/null 2>&1 ;
    then
       echo "this worked"
    else
       echo "this did not work"
fi

但是 - 当我对两个日期使用脚本时 - 它是成功的,当对于 31 时,它确实应该返回“这不起作用”

casper@host:/scripts$
casper@host:/scripts$ vim offshore_check
casper@host:/scripts$ ./offshore_check
20141230
this worked
casper@host:/scripts$ vim offshore_check
casper@host:/scripts$ ./offshore_check
20141231
this worked
casper@host:/scripts$
casper@host:/scripts$

最佳答案

file="/home/DropBox/transactions_20141231.csv"
ssh -q -T user@capserbox "test -e $file"
ret="$?"
case $ret in
  0)
    echo "$file exists"
    ;;
  1)
    echo "$file does not exist"
    ;;
  *)
    echo "other problem"
    ;;
esac

关于bash - 在 bash 中检查 ssh 远程命令的退出状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27724527/

相关文章:

linux - 按第一个字符复制文件夹的 Bash 脚本

linux - 计算文件名与字符串匹配的目录中的文件

git - 私有(private) GIT SSH 提示输入密码,可以 SSH 到远程存储库而无需密码

bash - 将 stdout 通过管道传输到 Perl 时,如何让它打印换行符?

java - 子代码 "Out of Memory"和 "GC Overhead Limit Exceeded"

php - 尝试查找和删除文本以修复WP恶意软件时,SSH命令无法正常工作

docker - Gitlab CI : Docker connect to remote MySQL via SSH Portforwarding before running tests

c# - 为使用 SSH.NET SshClient.CreateShellStream 执行的命令 (sudo/su) 提供子命令

c# - 带有 SSH.NET 的 Linux : “sorry, you must have a tty to run sudo”

bash - 如何获取用空格分隔的字符串的第一个元素