【问题标题】:grep command doesn't work when run remotelygrep 命令在远程运行时不起作用
【发布时间】:2015-07-28 20:45:13
【问题描述】:

我有一个这样的脚本:

if rsh $server grep "string" /usr/path/file.txt
then
   echo "yes"
else
   echo "no"
fi

基本上我想检查远程服务器中包含一些特定字符串的文件。它不起作用,并且总是显示“是”,无论我放入“字符串”。

但是,如果我删除“rsh $server”,这意味着在本地运行,并将该文件放入本地,它可以正常工作。

有谁知道问题出在哪里?如何修改我的脚本?

【问题讨论】:

  • 你确定你在测试 grep 退出代码,而不是 rsh 的?
  • rsh的退出状态只是连接是否成功,并不传递远程命令的退出状态。
  • 你能用ssh代替rsh吗?它会做你想做的。
  • 找到rsh 的这个包装器,它获取远程退出状态:gist.github.com/schlomo/7908037
  • @Barmar 但如果我运行以下命令,它对 rsh 有效: rsh $server ps -fuctc | grep xxx | grep -v grep >/dev/null

标签: bash unix rsh


【解决方案1】:

您可以使用远程文件中的数据在本地运行grep

if rsh $server cat /usr/path/file.txt | grep "string"
then
    echo "yes"
else
    echo "no"
fi

如果文件很大,这会很慢,因为整个文件必须通过网络发送,以便本地 grep 可以读取它。

【讨论】:

  • 大声笑非常感谢你。我刚刚回复了你,我认为我们都同时找到了这个解决方案:)
  • 是您的ps 示例给了我这个想法。
猜你喜欢
  • 2022-10-19
  • 1970-01-01
  • 2014-10-11
  • 2013-06-14
  • 2015-07-25
  • 2012-08-16
  • 2014-04-01
  • 2015-05-20
  • 2014-09-11
相关资源
最近更新 更多