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

Bash Script to gather directory and server info on a single line

我目前在 ,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

有人能帮忙吗?

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

未测试:

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

不要真的把你的密码放在这样的脚本中。改为设置您的 ssh 密钥。