我想编写一个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作为本地机器的参数,而是文本
任何想法都会非常感激!
答案 0 :(得分: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
的评论中所说,是一个命令。从标准输入读取值并将其粘贴在命令行上并不神奇。 (请注意,即使作为一个概念,也存在一个排序问题,因为根据定义,命令行是在可能存在任何标准输入之前构造的。)
答案 1 :(得分:0)
for f in `cat hostlist.txt`; do echo "### $f ###"; ssh $f find / -name "tmp" | sed "s/^/'$f | '/" ; done 2>/dev/null
我很难为find命令的每一行打印主机名,这有助于解决。