Pagina 1 di 1
scriptino bash
Inviato: giovedì 12 marzo 2009, 21:17
da garrett
volevo chiedervi se è possibile fare uno script bash o C o C++ o C# che faccia questo:
- acceda al gatewat 192.168.X.ABC
- inserisco User e Pass
- faccia il reboot del modem
così se sono assente da casa i miei possono riavviare il modem senza dover chiamarmi
(grazie tele2 :-X )
Re: scriptino bash
Inviato: giovedì 12 marzo 2009, 21:57
da Elrond
Concettualmente è possibile, praticamente se conosci anche i vari comandi da eseguire ti posso aiutare
Re: scriptino bash
Inviato: lunedì 16 marzo 2009, 14:21
da garrett
scusa per il ritardo!
allora dovrei
aprire firefox e digitare http:// 192.168.1.XXX
inserire USERNAME
inserire PASSWORD
cliccare su managment
cliccare su save/reboot
Re: scriptino bash
Inviato: lunedì 16 marzo 2009, 14:59
da Demiurgo
Non credo che così sia possibile... almeno non in questo modo...
Hai provato a vedere se il modem accetta connessioni telnet?
Re: scriptino bash
Inviato: lunedì 16 marzo 2009, 20:05
da garrett
mmm...ehm...cioè?
so cos'è telnet ma non so come fare a capirlo...
Re: scriptino bash
Inviato: lunedì 16 marzo 2009, 20:57
da Demiurgo
Prova a dare da terminale:
Re: scriptino bash
Inviato: lunedì 16 marzo 2009, 21:24
da Elrond
Ho provato con il mio e funziona telnet, però non capisco come si possono inserire tramite uno script nome utente e password (nome utente in realtà forse sì, ma password no) e fare le altre operazioni
Re: scriptino bash
Inviato: lunedì 16 marzo 2009, 21:31
da Demiurgo
Elrond ha scritto:
Ho provato con il mio e funziona telnet, però non capisco come si possono inserire tramite uno script nome utente e password (nome utente in realtà forse sì, ma password no) e fare le altre operazioni
Beh.. solitamente con echo nome utente e password entrano bene, a volte bisogna fare un po' di testing, ma io l'ho usato spesso con sudo e ti posso assicurare che funziona...
Per quanto riguarda il reboot solitamente da telnet esiste un comando apposta per riavviare il router

Re: scriptino bash
Inviato: martedì 17 marzo 2009, 0:18
da Angelo.T
Ciao
Il tuo router supporta connessioni SSH?
Se la risposta è affermativa puoi provare questo script in python che ho fatto per un mio amico con il tuo stesso problema.
Basta eseguirlo con cron ogni tot ore/minuti e se la linea è caduta ti riavvia il router da SSH.
Necessita di un modulo di python aggiuntivo Pexpect:
Per utilizzarlo basta che copi in un file di testo lo script e dai l'estensione .py, nella stessa directory dello script ti crea un file di log (RReboot.log)
è un po grezzo ma il suo lavoro lo fà :-[
Codice: Seleziona tutto
#!/usr/bin/env python
import pexpect
import os
from datetime import datetime
import urllib
data = datetime.today()
f = open('RReboot.log', 'a')
def ssh_command (user, host, password, command):
ssh_newkey = 'Are you sure you want to continue connecting'
child = pexpect.spawn('ssh -l %s %s %s'%(user, host, command))
i = child.expect([pexpect.TIMEOUT, ssh_newkey, 'password: '])
if i == 0: # Timeout
f.write('\nERROR! SSH could not login. Here is what SSH said:\n' + str(child.before) + str (child.after))
f.close()
return None
if i == 1: # SSH does not have the public key. Just accept it.
child.sendline ('yes')
child.expect ('password: ')
i = child.expect([pexpect.TIMEOUT, 'password: '])
if i == 0: # Timeout
f.write('\nERROR! SSH could not login. Here is what SSH said:\n' + str(child.before) + str (child.after))
f.close()
return None
child.sendline(password)
return child
def main ():
host = '192.168.X.X' #inserire indirizzo del router
user = 'router username' #inserire nome utente del router
password = 'password' #inserire password del router
child = ssh_command (user, host, password, 'reboot')
f.write('\n' + str(data) + '\ncheck connection')
try: urllib.urlopen('http://www.google.it')
except IOError:
if __name__ == '__main__':
try:
main()
f.write('\nServer does not respond, router reboot in progress')
f.close()
except Exception, e:
f.write('\n' + str(e))
f.close()
os._exit(1)
f.write('\ncheck passed')
f.close()
p.s.
è la prima volta che uso python, consigli, critiche e maledizioni sono ben accetti se qualche pythonista volesse dagli un occhiata
Ciao