Benutzer-Werkzeuge

Webseiten-Werkzeuge


network:shell_scripting

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
network:shell_scripting [05.07.2018 09:52] – Externe Bearbeitung 127.0.0.1network:shell_scripting [18.02.2019 13:01] richard
Zeile 180: Zeile 180:
 print (testVar) print (testVar)
 </file> </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>
 +
 +
 +===== ssh über bash =====
 +
 +<code bash ssh_test.sh>
 +#!/bin/bash
 +
 +user="schueler"
 +host="192.168.33.80"
 +ip_addr="40.0.0.1"
 +
 +ssh $user@$host<<EOF
 +/ip address print
 +/ip address add address=${ip_addr}/24 comment="MyNetz" interface=ether5
 +/ip address print
 +EOF
 +</code>
network/shell_scripting.txt · Zuletzt geändert: 30.04.2023 15:57 von richard

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki