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
有人能帮忙吗?
只需使用选项 -C1
将 ls
输出格式化为列: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 密钥。
我目前在 ,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
有人能帮忙吗?
只需使用选项 -C1
将 ls
输出格式化为列: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 密钥。