0

我想编写一个 Unix 命令,从 /etc/passwd 中选择一个随机用户,并使用 SHH 检查远程主机以确定是否存在具有相同 UID 的用户,如果用户存在,则从 passwd 打印出整行。

这是我到目前为止写的命令:

echo `shuf -n 1 /etc/passwd | cut -d ":" -f 3' | ssh 100.64.0.2  sed -n -e '/**xargs**/p' /etc/passwd

似乎 sed 命令不将 xargs 作为本地机器的参数,而是将文本

任何想法将不胜感激!

4

2 回答 2

0

你试图写这样的东西

user=$(shuf -n 1 /etc/passwd | cut -d ":" -f 3)
ssh 100.64.0.2  sed -n -e "/$user/p" /etc/passwd

但是您可能还想考虑getent改用。

user=$(shuf -n 1 /etc/passwd | cut -d ":" -f 3)
ssh 100.64.0.2  getent passwd "$user"

正如我在对 OP 的评论中所说的那样,xargs是一个命令。从标准输入读取一个值并将其粘贴在命令行上并不是什么神奇的事情。(请注意,即使作为一个概念,也存在排序问题,因为根据定义,命令行是在任何标准输入可能存在之前构建的。)

于 2014-10-23T03:47:45.097 回答
0
for f in `cat hostlist.txt`; do echo "### $f ###";  ssh $f find / -name "tmp" | sed "s/^/'$f  | '/" ;  done 2>/dev/null

我很难为 find 命令的每一行打印主机名,这有助于解决。

于 2016-06-01T18:44:52.477 回答