The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Нужно выполнить список команд на списке серверов"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Нужно выполнить список команд на списке серверов"  
Сообщение от universite email(ok) on 10-Фев-09, 05:32 
Решил обойтись малой кровью, но конструкция, похоже, еще больше усложнилась :(

Сам скрипт:


#!/bin/bash

server_list=$1
command_list=$2
log_file="script.log"

echo -e "\n============================\n`date`" >>$log_file
for server in `cat $server_list | grep -v ^# | grep -v ^$`; do\
    temp=`cat $command_list | grep -v ^# | grep -v ^$ | while read LINE; do \
    echo "ssh $server 'hostname; $LINE;' &&";  done`;\
    echo $temp; done | fmt;

в первую переменную загоняем список серверов
во вторую - список команд, по одной в каждой строке.

Проблема в том что никак не могу выполнить конструкцию вида:
ssh srv4.lan 'hostname; top -b -n 1 | head -n 5;'
&& ssh srv5.lan 'hostname; df -h;' &&
из-за того, что уже использовал все спецсимволы...
+ в конце не знаю как поставить пустое echo "done"


Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Нужно выполнить список команд на списке серверов"  
Сообщение от phpcoder email(??) on 10-Фев-09, 09:08 
В таких случаях нужно использовать экранирование.

Также вы можете найти удобным использовать clusterssh:
http://apps.sourceforge.net/mediawiki/clusterssh/index.php?t...
http://citkit.ru/articles/602/


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Нужно выполнить список команд на списке серверов"  
Сообщение от ACCA (ok) on 10-Фев-09, 09:46 

#!/bin/bash
server_list=$1
command_list=$2
log_file="script.log"
echo -e "\n============================\n`date`" >>$log_file

grep -Ev ^[#$] $server_list | while read hostname
do
    echo **** $hostname > $log_file.$hostname
    grep -Ev ^[#$] $command_list | ssh $hostname >> $log_file.$hostname &
done

cat $log_file.* >> $log_file
rm $log_file.*


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Нужно выполнить список команд на списке серверов"  
Сообщение от universite email(ok) on 11-Фев-09, 01:34 
>[оверквотинг удален]
>grep -Ev ^[#$] $server_list | while read hostname
>do
>    echo **** $hostname > $log_file.$hostname
>    grep -Ev ^[#$] $command_list | ssh $hostname >> $log_file.$hostname &
>done
>
>cat $log_file.* >> $log_file
>rm $log_file.*
>
>

Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
usage: ssh [-1246AaCfgkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-e escape_char] [-F configfile]
           [-i identity_file] [-L [bind_address:]port:host:hostport]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-R [bind_address:]port:host:hostport] [-S ctl_path]
           [-w tunnel:tunnel] [user@]hostname [command]

+ нафига писать в разные логи, а потоп объединять в один?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Нужно выполнить список команд на списке серверов"  
Сообщение от ACCA (ok) on 13-Фев-09, 11:10 
[...]
>Pseudo-terminal will not be allocated because stdin is not a terminal.

Подави с помощью -T


>usage: ssh [-1246AaCfgkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec]

Возможно кривой/пустой $hostname, сделай bash -x и посмотри что случилось.


>+ нафига писать в разные логи, а потоп объединять в один?

Чтобы не перемешивались логи от разных хостов. Обрати внимание на &

Забыл ещё деталь:

[...]
done

# Дождаться завершения всех
wait

cat $log_file.* >> $log_file
rm $log_file.*

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Нужно выполнить список команд на списке серверов"  
Сообщение от chip email(ok) on 10-Фев-09, 11:10 
>[оверквотинг удален]
>echo -e "\n============================\n`date`" >>$log_file
>for server in `cat $server_list | grep -v ^# | grep -v
>^$`; do\
>    temp=`cat $command_list | grep -v ^# | grep
>-v ^$ | while read LINE; do \
>    echo "ssh $server 'hostname; $LINE;' &&";  done`;\
>
>    echo $temp; done | fmt;
>
>

Не изобретайте велосипед -- apt-cache show dsh

dsh -g <group_of_hosts> "hostname; top -b -n 1 | head -n 5"

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Нужно выполнить список команд на списке серверов"  
Сообщение от universite email(ok) on 11-Фев-09, 01:29 

>Не изобретайте велосипед -- apt-cache show dsh
>
>dsh -g <group_of_hosts> "hostname; top -b -n 1 | head -n 5"

connect to address 10.7.10.101 port 544: Connection refused
Trying krb4 rsh...

нужно обойтись стандартным ssh.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Нужно выполнить список команд на списке серверов"  
Сообщение от chip email(ok) on 11-Фев-09, 09:29 
>
>>Не изобретайте велосипед -- apt-cache show dsh
>>
>>dsh -g <group_of_hosts> "hostname; top -b -n 1 | head -n 5"
>
>connect to address 10.7.10.101 port 544: Connection refused
>Trying krb4 rsh...
>
>нужно обойтись стандартным ssh.

dsh ни что иное как обертка над "стандартным ssh". Connection refused:
telnet 10.7.10.101 544
ssh -p 544 10.7.10.101

тоже должны не работать в этом случае.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Нужно выполнить список команд на списке серверов"  
Сообщение от universite email(ok) on 11-Фев-09, 15:42 
>[оверквотинг удален]
>>connect to address 10.7.10.101 port 544: Connection refused
>>Trying krb4 rsh...
>>
>>нужно обойтись стандартным ssh.
>
>dsh ни что иное как обертка над "стандартным ssh". Connection refused:
>telnet 10.7.10.101 544
>ssh -p 544 10.7.10.101
>
>тоже должны не работать в этом случае.

еще раз говорю:
ssh $server '$command' прекрасно работает
мне не надо юзать rsh

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Нужно выполнить список команд на списке серверов"  
Сообщение от angra (ok) on 11-Фев-09, 16:50 
Прочитать man dsh и найти опцию -r слишком сложно для вас? Вам нужно как младенцу все разжевать и в рот положить?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Нужно выполнить список команд на списке серверов"  
Сообщение от universite email(ok) on 11-Фев-09, 20:14 
>Прочитать man dsh и найти опцию -r слишком сложно для вас? Вам
>нужно как младенцу все разжевать и в рот положить?

Вот так и надо советовать с ключем выше.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру