Benutzer-Werkzeuge

Webseiten-Werkzeuge


network:shell_scripting

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Letzte Überarbeitung Beide Seiten der Revision
network:shell_scripting [05.07.2018 09:52]
127.0.0.1 Externe Bearbeitung
network:shell_scripting [13.02.2019 12:01]
richard
Zeile 179: Zeile 179:
 testVar = raw_input("​Ask user for something."​) testVar = raw_input("​Ask user for something."​)
 print (testVar) print (testVar)
 +</​file>​
 +
 +
 +===== ssh mit python =====
 +
 +Es gibt mehrere Implementierungen für ssh in python. Das Module ''​paramiko''​ wird hier vorgestellt.
 +
 +Installation:​
 +<​code>​
 +python3 -m pip --proxy https://​192.168.21.91:​3128 install --user paramiko
 +</​code>​
 +
 +Beispiel-Script:​
 +<file python ssh_paramiko_test.py>​
 +# https://​daanlenaerts.com/​blog/​2016/​01/​02/​python-and-ssh-sending-commands-over-ssh-using-paramiko/​
 +
 +import paramiko
 +USERNAME='​schueler'​
 +PASSWORD='​schueler'​ #kritisch bei offenen Strukturen; hier besser keys verwenden
 +HOST='​192.168.33.80'​
 +
 +ssh = paramiko.client.SSHClient()
 +ssh.set_missing_host_key_policy(
 + ​paramiko.AutoAddPolicy())
 +
 +ssh.connect(HOST,​ username=USERNAME,​ password=PASSWORD)
 +stdin, stdout, stderr = ssh.exec_command('​ip address print'​)
 +while not stdout.channel.exit_status_ready():​
 +                # Print data when available
 +                if stdout.channel.recv_ready():​
 +                    alldata = stdout.channel.recv(1024)
 +                    prevdata = b"​1"​
 +                    while prevdata:
 +                        prevdata = stdout.channel.recv(1024)
 +                        alldata += prevdata
 + 
 +                    print("​1:"​+str(alldata,​ "​utf8"​))
 +
 +stdin, stdout, stderr = ssh.exec_command('​ip address add address=22.0.0.1/​24 interface=ether4'​)
 +while not stdout.channel.exit_status_ready():​
 +                # Print data when available
 +                if stdout.channel.recv_ready():​
 +                    alldata = stdout.channel.recv(1024)
 +                    prevdata = b"​1"​
 +                    while prevdata:
 +                        prevdata = stdout.channel.recv(1024)
 +                        alldata += prevdata
 + 
 +                    print("​2:"​+str(alldata,​ "​utf8"​))
 +</​file>​
 +
 +<file python ssh_ssh_test.py>​
 +from ssh.session import Session
 +from ssh import options
 +# Username für Login
 +USERNAME= '​schueler'​
 +# Zielmaschine hier mikrotik
 +HOST = '​192.168.33.80'​
 +
 +# Aufbau der ssh-Session
 +s = Session()
 +s.options_set(options.HOST,​ HOST)
 +s.connect()
 +
 +# Login mit USERNAME
 +s.userauth_agent(USERNAME)
 +
 +chan = s.channel_new()
 +chan.open_session()
 +chan.request_exec('​ip address print'​)
 +"""​
 +# Ausgabe der Antwort
 +size, data = chan.read()
 +while size > 0:
 +    print(data.strip())
 +    size, data = chan.read()
 +"""​
 +chan.request_exec('​ip address add address=30.0.0.1/​24 interface=ether3'​)
 +chan.request_exec('​ip address print'​)
 +
 +# Ausgabe der Antwort
 +size, data = chan.read()
 +while size > 0:
 +    print(data.strip())
 +    size, data = chan.read()
 +
 +chan.close()
 </​file>​ </​file>​
network/shell_scripting.txt · Zuletzt geändert: 18.02.2019 13:01 von richard