2015-10-18 44 views
1

我正在查看一台机器上的随机UID是否存在于另一台机器上并进行打印(如果存在)。我对awk很陌生,并且遇到了障碍。这里是我如何解决这个问题: 在/ etc/passwd中选择一个随机行,获取第三列,它是UID; ssh到另一台机器,获取/ etc/passwd内容,检查第一台机器的参考UID是否出现在任何行的第三列并打印出来。 我只能达到我得到参考UID的地步。如何使用这个值,ssh进入另一台机器和比较,如果它存在:使用awk命令并与另一台机器上的命令输出进行比较

shuf -n 1 /etc/passwd | awk '{print $3}' <the reference UID> <ssh 10.0.0.0> cat /etc/passwd <compare if reference UID is present> 
+0

'xargs'可以通过调用ssh和在正确的地方 – Oerd

+0

感谢@Oerd puting的UID帮助你。我使用了xargs并编辑了如下的命令。但是如何将第二个管道的输出传递给第二台机器上的awk命令? 'shuf -n 1/etc/passwd | awk -F':''{print $ 3}'| xargs ssh 10.0.0.1 cat/etc/passwd | awk -F':''$ 3 == <输出至第二个管道> {print $ 0}'' –

+0

我不是'xargs'master,所以可能有更好的方法,但是您可以将所有内容写入shell脚本这是由xargs调用的。在脚本中,您可以将参数放在适合的位置:) – Oerd

回答

0

这里是这样做的一种方式:

awk -vuid=$(shuf -n 1 /etc/passwd | awk -F: '{print $3}') -F: '$3 == uid' <(ssh host cat /etc/passwd) 

其分解:

  1. 这部分商店uid:-vuid=$(shuf -n 1 /etc/passwd | awk -F: '{print $3}')
  2. 如果第三个字段与我们的uid匹配,这将打印行:'$3 == uid'
  3. 这里我们治疗ssh命令的输出文件:<(ssh host cat /etc/passwd)