2010-01-04 2 views
3

В linux (ubuntu) можно ли выполнить скрипт по любому входящему сетевому соединению?Запуск сценария при любом сетевом подключении

В течение длительного периода бездействия на моем домашнем сервере я планирую прекратить программный рейд, парковку дисков данных и перезапуск массива RAID при столкновении с входящим сетевым соединением.

Я изучал эту проблему и не нашел подходящего решения, но любая помощь приветствуется.

Нил

Замечание: Я знаю, что это unnessecary остановить/запустить массив и есть минусы (диск носить & слезу ...). Однако я настроен на свои пути, пожалуйста, не отправляйте сообщения, чтобы я не останавливал/не запускал диски.

Edit (1):

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

Я думаю, что нужно бы использовать Xinetd связывание ловца скрипта, который перехватывает входящие данные подключения на все порты, запускает свой запуск сценария и передает данные входящие подключения к соответствующей службе для этого порта. Единственная проблема - я не знаю, какие данные мне нужно будет поймать или как в python.

Edit (2): Я взломал вместе решение с использованием библиотеки Python pypcap http://code.google.com/p/pypcap/. Для дальнейшего использования здесь приведен код.

import pcap 
... 

pc = pcap.pcap(name) 
    pc.setfilter(' '.join(args)) 
pc.setnonblock() 

try: 
     for ts, pkt in pc: 
    # subprocess.call([filename, args]) 
    print 'readying disks...' 
    break 
except OSError, ValueError: 
    print 'Error: invalid arguements passed to subprocess' 
    except KeyboardInterrupt: 
     print 'Error: keyboard interupt' 

ответ

1

Посмотрите на netfilter/iptables. Вы можете написать код, чтобы использовать библиотеки API пользовательского пространства для обнаружения входящих событий пакета.

+0

спасибо за предложение. Я просмотрел библиотеки, но решил использовать использование libpcap или, более конкретно, pycap http://code.google.com/p/pypcap/ – 2010-01-06 14:20:11

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