【发布时间】:2017-08-08 01:20:57
【问题描述】:
我有一个文件 server.txt 包含不同的主机名,例如:
hostname1.com
hostname2.com
我的 shell 脚本 servers.sh 是为了从 servers.txt 文件的列表中获取 /etc/passwd 和 /etc/group 文件。
我希望在我的最终输出文件中添加条目来自的主机名。我的脚本如下所示:
while read HOST ;
do
sshpass -p $password ssh -n $username@$HOST 'cat /etc/passwd'>>users.txt
sshpass -p $password ssh -n $username@$HOST 'cat /etc/group'>>groups.txt
done < servers.txt
echo -e "UserName;UID;GID;HomeDir;Shell" > final_users.csv
cut -d: -f1,3,4,6,7 users.txt | tr ':' ';'>> final_users.csv
echo -e "GroupName;GID;Members" > final_groups.csv
awk -F '[:,]' '{for(i=4;i<=NF;i++)print$1";"$3";"$i}' groups.txt >> final_groups.csv
目标是在final_users.csv 和final_groups.csv 中添加另一列,例如hostname,这样我就可以知道每个条目来自哪些服务器。
【问题讨论】:
标签: bash shell loops unix while-loop