2016-02-17 1 views
0

В настоящее время я использую следующую команду в a, sh для сбора списка содержимого определенной папки в списке серверов, отображаемых в списке.txt (содержит IP-адрес)Bash Script для сбора информации о директории и сервере в одной строке

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

Хотя это работает, его только половина моей проблемы, я в общей сложности новичок с BASH

То, что я пытаюсь получить список отформатирован как такового

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

Есть ли кто может помочь?

+0

Что выводит сценарий? –

ответ

0

Непроверенные:

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

НЕ РЕАЛЬНО PUT ПАРОЛЬ в сценарии, как это. Вместо этого настройте свои ключи ssh.

+0

Это добавляет имя хоста, но, возможно, в сочетании с ответом mikael, оно будет отформатировано в столбцы. Я думаю, вы оба ответили на часть вопроса –

+0

Когда вывод 'ls' не является tty (как есть (не) при передаче по каналу в sed), выход все равно в одном столбце, а -C1 избыточен. –

0

Просто отформатируйте вывод ls в столбцы с опцией -C1: ls -C1 /usr/local/folder.

+1

Этот параметр командной строки будет форматировать вывод ls в столбцы, я вижу, что mikael не добавил объяснений, мое редактирование находится на рассмотрении –

+1

. Я добавил некоторые объяснения. Благодарю. –

Смежные вопросы