Привет!
Смешной наверное вопрос, но не пойму почему так
Хочу получать с удаленного сервера результат команды top:
1. думаю скриптом подключаться по ssh c командой "top > file"
2. все нормально но в файл не выводится одна строка из вывода
вот например нормальный вывод (когда в консоли):
----------------------------------------
last pid: 23410; load averages: 0.19, 0.28, 0.32 up 1+19:08:39 09:02:10
582 processes: 1 running, 581 sleeping
CPU states: 1.5% user, 0.0% nice, 3.7% system, 2.6% interrupt, 92.1% idle
Mem: 696M Active, 860M Inact, 327M Wired, 88M Cache, 112M Buf, 36M Free
Swap: 2048M Total, 236M Used, 1812M Free, 11% InusePID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
800 mysql 15 20 0 332M 21420K kserel 1 120:24 11.28% mysqld
837 root 1 96 0 7396K 4136K select 0 83:00 0.54% perl5.8.8
----------------------------------------
а вот когда в файл:
----------------------------------------
last pid: 23493; load averages: 0.43, 0.35, 0.34 up 1+19:09:26 09:02:57
619 processes: 1 running, 618 sleepingMem: 714M Active, 862M Inact, 332M Wired, 83M Cache, 112M Buf, 18M Free
Swap: 2048M Total, 236M Used, 1812M Free, 11% Inuse
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
800 mysql 15 20 0 332M 21388K kserel 0 120:34 8.11% mysqld
837 root 1 96 0 7396K 4136K select 0 83:02 3.96% perl5.8.8
----------------------------------------
куда девается строка с данными по CPU? и как ее "поймать" для записи?
да, вот такой смешной ситуция :)
попробуй поюзать опцию -b
>попробуй поюзать опцию -bнет, не помогло :(
тут еще дополнительный вопрос возника - как передать по ssh на удаленный сервер цепочку команд? разделитель ";" ведет к тому что последующие команды выполняются на локальной машине
>>попробуй поюзать опцию -b
>
>нет, не помогло :(
>
>тут еще дополнительный вопрос возника - как передать по ssh на удаленный
>сервер цепочку команд? разделитель ";" ведет к тому что последующие команды
>выполняются на локальной машинесимвол перевода строки "\n"
>символ перевода строки "\n"???
это как?
в командной строке вида:ssh -l <user> x.x.x.x -p xxx top -b -n 1 > re
добавить еще команду используя разделитель "\n"? Вы ничего не путаете?
>>символ перевода строки "\n"
>
>???
>это как?
>в командной строке вида:
>
>ssh -l <user> x.x.x.x -p xxx top -b -n 1 > re
>
>добавить еще команду используя разделитель "\n"? Вы ничего не путаете?ssh -l <user> x.x.x.x -p xxx 'top -b -n 1 > re';ls;pwd'
>>символ перевода строки "\n"
>
>???
>это как?
>в командной строке вида:
>
>ssh -l <user> x.x.x.x -p xxx top -b -n 1 > re
>
>добавить еще команду используя разделитель "\n"? Вы ничего не путаете?если у вас не проходит ";" , не знаю почему, у меня проходит, ставим "\n" или вообще пишем каждую комманду с новой строки, если ей не строить поток
test.sh
#!/bin/bash
CONNECT="ssh -l <user> x.x.x.x -p xxx"$CONNECT "top -b -n 1 > re
ls >ls.txt
cat ls.txt"
>[оверквотинг удален]
>проходит, ставим "\n" или вообще пишем каждую комманду с новой строки,
>если ей не строить поток
>
>test.sh
>#!/bin/bash
>CONNECT="ssh -l <user> x.x.x.x -p xxx"
>
>$CONNECT "top -b -n 1 > re
>ls >ls.txt
>cat ls.txt"на удаленном сервере выполняется только первая строка (top) - другие выполняются на локальной машине, т.е. как обычные команды, а надо чтобы эта связка отработала удаленно
система FreeBSD 6.2 - а то не сказал, может нужно знать
>[оверквотинг удален]
>>
>>$CONNECT "top -b -n 1 > re
>>ls >ls.txt
>>cat ls.txt"
>
>на удаленном сервере выполняется только первая строка (top) - другие выполняются на
>локальной машине, т.е. как обычные команды, а надо чтобы эта связка
>отработала удаленно
>
>система FreeBSD 6.2 - а то не сказал, может нужно знатьВозьми команды в кавычки: "top -b -n 1 > re;ls;..."
>[оверквотинг удален]
>>>ls >ls.txt
>>>cat ls.txt"
>>
>>на удаленном сервере выполняется только первая строка (top) - другие выполняются на
>>локальной машине, т.е. как обычные команды, а надо чтобы эта связка
>>отработала удаленно
>>
>>система FreeBSD 6.2 - а то не сказал, может нужно знать
>
>Возьми команды в кавычки: "top -b -n 1 > re;ls;..."понимаешь в чем особенность - если их все обьединить, то они они ВСЕ выыполняются на удаленной машине - я мне нужно результат здесь на локальной...
по одиночке - они отлично работают и сохраняют результат здесь, а вот в цепочке - эти команды работают только там
>по одиночке - они отлично работают и сохраняют результат здесь, а вот
>в цепочке - эти команды работают только тамты-б сразу так и говорил, а то голову морочаешь
test.sh
============================
#!/bin/bashCONNECT="ssh -l <user> x.x.x.x -p xxx"
i=`$CONNECT top -b -n 1`
echo "$i" >/re.txt
============================
результат выполнения комманды на удалённой машине загоняем в переменную,
эта переменная уже на локальной машине, дальше делай что хочешь, я её сохранил в файл
>[оверквотинг удален]
> 15 20 0
>332M 21388K kserel 0 120:34 8.11% mysqld
> 837 root
> 1 96 0
> 7396K 4136K select 0 83:02 3.96% perl5.8.8
>
>----------------------------------------
>куда девается строка с данными по CPU? и как ее "поймать" для
>записи?
>да, вот такой смешной ситуция :)А по snmp не проще статистику снять?