PDA

Просмотр полной версии : Программа для автоматического выполнения комманд на удаленном linux с windows машины


pash_it
04.11.2010, 14:02
Есть мониторинг, который может запускать программу, если сайт недоступен.
Например хотело бы чтобы при мониторинге ФТП, когда ФТП лежит(( мониторинг запускал программу, которая коннектилась бы по ssh и выполняла всего 1 команду:
service proftpd restart

Sammerset
04.11.2010, 14:16
наф тебе удалённо? скрипт на проверку накалякай, в крон укажи задание выполнение каждые 5 мин. и будет тебе мармелад!

pash_it
04.11.2010, 14:26
Нет нужно чтобы когда FTP только был недоступен( Мониторинг заметил - запустил программку, программка вошла перезапустила.

help40
04.11.2010, 20:42
1) как все знаем можно използувать ssh , в твоем случае ssh с Cygwin

инсталируем Cygwin
делаем C:\cygwin\launch.bat

Код:



@echo off
C:
chdir C:\cygwin\bin
bash --login -i -c "%*"


запускаем команду

Код:



C:\cygwin\launch.bat ssh user@host "remotecommand"


конечно тебе нужно сгенерировать ключ для authentication бес парола

Код:



You@PC ~
$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/You/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/You/.ssh/id_dsa.
Your public key has been saved in /home/You/.ssh/id_dsa.pub.
The key fingerprint is:
e0:6a:23:1b:9b:40:bd:73:76:94:c0:e5:35:21:cb:a5 You@PC

You@PC ~
$ cat .ssh/id_dsa.pub | ssh remoteUser@remoteHost 'cat >>.ssh/authorized_keys'
remoteUser@remoteHost's password:


2) можешь използуват и plink.exe , которая част из Putty

Код:



C:\Program Files\Putty\plink.exe -ssh -2 -P 22 user@server ls -l /tmp

jabjab
04.11.2010, 20:50
Когда мне понадобилось решить аналогичную задачу, я остановился на

Для просмотра скрытого содержимого необходимо иметь 5 сообщений, у вас 0 сообщений.


он бесплатный и никакого дополнительного софта или библиотек не нужно.

help40
04.11.2010, 21:34
jabjab написал(а):

Когда мне понадобилось решить аналогичную задачу, я остановился на
*** скрытое содержание ***
он бесплатный и никакого дополнительного софта или библиотек не нужно.



ето sshd - тоесть демон , там нет "ssh" который нам нужен

jabjab
04.11.2010, 21:39
help40 написал(а):

ето sshd - тоесть демон , там нет "ssh" который нам нужен


Каюсь, невнимательно прочитал сообщение ТС и неправильно его понял. В таком случае, есть, опять же, альтернатива cygwin — нативный клиент на основе исходников известного putty: http://winssh.narod.ru/ (https://href.li/?http://winssh.narod.ru/)

pash_it
05.11.2010, 03:39
help40, Огромное спасибо! Сделал как автоматически все делать с помощью 1 команды plink.exe.

Но появился вопрос по безопасности, как разрешить пользователю linux только перезапускать FTP (хотя бы перезапускть), все остальные любые команды - запретить.

ioioio4
05.11.2010, 05:19
что то неправильное мутите

cron + шел скрипт

скрипт пингует локальный порт , если ничего нет то рестарт

pash_it
05.11.2010, 12:46
ProFTPD работает, не знаю как его еще можно мониторить,

Это в момент когда он повис:
[root@s12 ~]# ps aux | grep ftp
root 6260 0.0 0.0 6132 592 pts/0 S+ 11:44 0:00 grep ftp
ftp 24382 0.0 0.0 41128 2332 ? SLs Oct31 0:00 proftpd: (accepting connections)
[root@s12 ~]# telnet localhost 21
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 ::ffff:127.0.0.1 FTP server ready
quit
221 Goodbye.
Connection closed by foreign host.
[root@s12 ~]# service proftpd status
proftpd (pid 24382) is running...
[root@s12 ~]# service proftpd restart
Shutting down proftpd: [ OK ]
Starting proftpd: [ OK ]
[root@s12 ~]#

Только после перезапуска FTP на него можно войти.

Adramelech
11.02.2011, 20:53
pash_it написал(а):

help40, Огромное спасибо! Сделал как автоматически все делать с помощью 1 команды plink.exe.
Но появился вопрос по безопасности, как разрешить пользователю linux только перезапускать FTP (хотя бы перезапускть), все остальные любые команды - запретить.


Попробуйте команду visudo (аналог nano /etc/sudoers)
и в конфиг внесите
linux ALL=(ALL) NOPASSWD: /etc/init.d/ftp

И будет вам счастье, если планируете еще какие то сервисы таким путем мониторить то команды перечислять можно через запятую.

LuckyNeo
04.03.2011, 20:56
А можно ещё подробнее, чтобы создать разным пользователям и админам разделение доступа. После visudo под рутом:


## Host Aliases
## Groups of machines. You may prefer to use hostnames (perhap using
## wildcards for entire domains) or IP addresses instead.
# Host_Alias FILESERVERS = fs1, fs2
# Host_Alias MAILSERVERS = smtp, smtp2
Host_Alias SAMPLE = 192.168.1.2, 127.0.0.1


Затем раскомментировать строчку:


## Networking
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool, /etc/sysconfig/iptables
## Installation and management of software
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum


Затем:


## User Aliases
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
# User_Alias ADMINS = jsmith, mikem
User_Alias GODS = admincheg, lamercheg


=)
Дальше:


## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
## user MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
admincheg SAMPLE = NETWORKING
lamercheg SAMPLE = SOFTWARE


И последнее:


## Same thing without a password
#%wheel ALL=(ALL) NOPASSWD: ALL
GODS ALL =(ALL) NOPASSWD: ALL


Могу ещё написать мануальчик по подробному созданию пермишенов в среде visudo Сам освоил недавно. прекрасная команда!

exn
06.03.2011, 14:28
LuckyNeo написал(а):

А можно ещё подробнее, чтобы создать разным пользователям и админам разделение доступа.



sudo su user -c "commands"

удобно когда не хочеш вводить пароль. но я бы порекомендовал осилить ключи и expect.