scriptino bash

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
garrett
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 680
Iscrizione: martedì 9 ottobre 2007, 20:45
Desktop: ubuntu
Distribuzione: Ubuntu 12.10 64bit
Località: Veneto
Contatti:

scriptino bash

Messaggio 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 )
Avatar utente
Elrond
Rampante Reduce
Rampante Reduce
Messaggi: 5018
Iscrizione: sabato 22 novembre 2008, 12:32
Contatti:

Re: scriptino bash

Messaggio da Elrond »

Concettualmente è possibile, praticamente se conosci anche i vari comandi da eseguire ti posso aiutare
Il mio blog su Ubuntu | Script per vedere canali RAI in diretta senza browser (discussione)
Quando devi inserire nei messaggi del codice usa il tag code, è il pulsante # sopra le emoticon: [code]inserisci il testo qui[/code]
garrett
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 680
Iscrizione: martedì 9 ottobre 2007, 20:45
Desktop: ubuntu
Distribuzione: Ubuntu 12.10 64bit
Località: Veneto
Contatti:

Re: scriptino bash

Messaggio 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
Avatar utente
Demiurgo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2093
Iscrizione: domenica 10 giugno 2007, 13:06
Località: Pesaro

Re: scriptino bash

Messaggio da Demiurgo »

Non credo che così sia possibile... almeno non in questo modo...

Hai provato a vedere se il modem accetta connessioni telnet?
NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
garrett
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 680
Iscrizione: martedì 9 ottobre 2007, 20:45
Desktop: ubuntu
Distribuzione: Ubuntu 12.10 64bit
Località: Veneto
Contatti:

Re: scriptino bash

Messaggio da garrett »

mmm...ehm...cioè?
so cos'è telnet ma non so come fare a capirlo...
Avatar utente
Demiurgo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2093
Iscrizione: domenica 10 giugno 2007, 13:06
Località: Pesaro

Re: scriptino bash

Messaggio da Demiurgo »

Prova a dare da terminale:

Codice: Seleziona tutto

telnet (ip del router)
NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
Avatar utente
Elrond
Rampante Reduce
Rampante Reduce
Messaggi: 5018
Iscrizione: sabato 22 novembre 2008, 12:32
Contatti:

Re: scriptino bash

Messaggio 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
Il mio blog su Ubuntu | Script per vedere canali RAI in diretta senza browser (discussione)
Quando devi inserire nei messaggi del codice usa il tag code, è il pulsante # sopra le emoticon: [code]inserisci il testo qui[/code]
Avatar utente
Demiurgo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2093
Iscrizione: domenica 10 giugno 2007, 13:06
Località: Pesaro

Re: scriptino bash

Messaggio 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 ;)
NuDe Project: >
Se volete fare due chiacchiere o avete bisogno di una mano per qualcosa questo è il mio contatto msn: demiurgo-linux@hotmail.it
Angelo.T
Prode Principiante
Messaggi: 3
Iscrizione: sabato 7 marzo 2009, 0:45

Re: scriptino bash

Messaggio 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:

Codice: Seleziona tutto

sudo apt-get install python-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
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti