Bash脚本用于在一行上收集目录和服务器信息

时间:2016-02-17 13:54:47

标签: bash scripting directory ls hostname

我目前在a,sh中使用以下命令来收集服务器列表中特定文件夹的内容列表,由list.txt(包含IP)描述

for f in `cat serverlist.txt`; do
    echo "### $f ###";
    sshpass -p PASSWORD ssh USER@$f ls /usr/local/folder  >>list.txt;
done

虽然这有效,但它只是我问题的一半,我是BASH的新手

我想要获得的是一个格式如此的列表

file1.HOSTNAMEOFSERVER1
file2.HOSTNAMEOFSERVER1
file3.HOSTNAMEOFSERVER1
file1.HOSTNAMEOFNEXTSERVER2
file2.HOSTNAMEOFNEXTSERVER2
file3.HOSTNAMEOFNEXTSERVER2
file1.HOSTNAMEOFNEXTSERVER3

有人能帮忙吗?

2 个答案:

答案 0 :(得分:0)

只需使用ls选项将-C1输出格式化为列:ls -C1 /usr/local/folder

答案 1 :(得分:0)

未测试:

while read host; do
    sshpass -p PASSWORD ssh USER@"$host" ls /usr/local/folder | 
        sed 's/$/.'"$host"/;
done < serverlist.txt

不要在这样的剧本中实际输入密码。改为设置你的ssh密钥。