network:shell_scripting
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| network:shell_scripting [2014/09/18 19:13] – richard | network:shell_scripting [2025/11/19 16:15] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ~~DISCUSSION: | ||
| ====== Kurzeinführung in Skripting ====== | ====== Kurzeinführung in Skripting ====== | ||
| Zeile 70: | Zeile 71: | ||
| sudo ip route add default via 10.0.0.1 | sudo ip route add default via 10.0.0.1 | ||
| </ | </ | ||
| + | |||
| + | ==== Beispiel: telnet-Verbindung zu einem Switch aufbauen ==== | ||
| + | |||
| + | Mit dem folgenden Script wird eine Verbindung mit Hilfe von '' | ||
| + | Im Anschluss werden bis zum '' | ||
| + | Die folgende Tabelle zeigt die Befehle und ihre Wirkung auf dem Switch: | ||
| + | |||
| + | ^ Befehl ^ Wirkung auf Switch ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | <file bash telsession.sh> | ||
| + | #!/bin/bash | ||
| + | # netcat (kurz nc) ist ein Kommandozeilen-Tool, | ||
| + | # Verwendung: nc < | ||
| + | nc 192.168.33.61 23 <<' | ||
| + | schueler | ||
| + | schueler | ||
| + | system-view | ||
| + | display vlan | ||
| + | undo vlan all | ||
| + | y | ||
| + | vlan 2 | ||
| + | port Ethernet 1/0/1 | ||
| + | display vlan 2 | ||
| + | vlan 3 | ||
| + | port Ethernet 1/0/2 | ||
| + | quit | ||
| + | interface Ethernet 1/0/5 | ||
| + | port link-type trunk | ||
| + | port trunk permit vlan 3 | ||
| + | port trunk permit vlan 2 | ||
| + | quit | ||
| + | quit | ||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | ==== Beispiel: Automatische Synchonisieren von Dateien mit Luckybackup ==== | ||
| + | |||
| + | Mit dem folgenden Script lässt sich die Synchronisation unter Linux automatisieren. Voraussetzung dafür ist das automatische Einbinden von USB-Laufwerken. | ||
| + | Ein paar Anpassung sind nötig: | ||
| + | - Pfad zum USB-Stick anpassen (hier ''/ | ||
| + | - mit Befehl '' | ||
| + | - Profil-Name von Luckyback eintragen (Default ist: default) | ||
| + | |||
| + | Wie funktioniert das Ganze? | ||
| + | |||
| + | Das Script prüft, ob die Datei ''/ | ||
| + | sich das Script für 1 Sek schlafen. Wenn die Datei da ist, also der Stick vom System automatisch eingebunden wurde, dann wird Luckybackup mit dem Default-Profile ausgeführt. | ||
| + | Hier können auch andere Profile ausgewählt werden. Dazu muss '' | ||
| + | |||
| + | <file bash luckybackup.sh> | ||
| + | #!/bin/bash | ||
| + | # 1. Pfad zum USB-Stick anpassen (hier / | ||
| + | # 2. mit ' | ||
| + | # 3. Profil-Name von Luckyback eintragen (Default ist: default) | ||
| + | x=0 | ||
| + | while [ " | ||
| + | | ||
| + | sleep .1 | ||
| + | echo " | ||
| + | done | ||
| + | echo " | ||
| + | | ||
| + | </ | ||
| + | |||
| + | ===== Python ===== | ||
| + | |||
| + | Eine weitere sehr mächtige Variante Prozesse zu automatisieren, | ||
| + | |||
| + | <file python python_sample.py> | ||
| + | # | ||
| + | # coding: utf8 | ||
| + | |||
| + | # Import für Call https:// | ||
| + | from subprocess import call | ||
| + | |||
| + | # Import für os.system https:// | ||
| + | import os | ||
| + | |||
| + | call([" | ||
| + | |||
| + | os.system(" | ||
| + | |||
| + | |||
| + | # User anlegen | ||
| + | def createUser(name, | ||
| + | encPass = crypt.crypt(password," | ||
| + | return | ||
| + | |||
| + | testVar = raw_input(" | ||
| + | print (testVar) | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== ssh mit python ===== | ||
| + | |||
| + | Es gibt mehrere Implementierungen für ssh in python. Das Module '' | ||
| + | |||
| + | Installation: | ||
| + | < | ||
| + | python3 -m pip --proxy https:// | ||
| + | </ | ||
| + | |||
| + | Beispiel-Script: | ||
| + | <file python ssh_paramiko_test.py> | ||
| + | # https:// | ||
| + | |||
| + | import paramiko | ||
| + | USERNAME=' | ||
| + | PASSWORD=' | ||
| + | HOST=' | ||
| + | |||
| + | ssh = paramiko.client.SSHClient() | ||
| + | ssh.set_missing_host_key_policy( | ||
| + | | ||
| + | |||
| + | ssh.connect(HOST, | ||
| + | stdin, stdout, stderr = ssh.exec_command(' | ||
| + | while not stdout.channel.exit_status_ready(): | ||
| + | # Print data when available | ||
| + | if stdout.channel.recv_ready(): | ||
| + | alldata = stdout.channel.recv(1024) | ||
| + | prevdata = b" | ||
| + | while prevdata: | ||
| + | prevdata = stdout.channel.recv(1024) | ||
| + | alldata += prevdata | ||
| + | |||
| + | print(" | ||
| + | |||
| + | stdin, stdout, stderr = ssh.exec_command(' | ||
| + | while not stdout.channel.exit_status_ready(): | ||
| + | # Print data when available | ||
| + | if stdout.channel.recv_ready(): | ||
| + | alldata = stdout.channel.recv(1024) | ||
| + | prevdata = b" | ||
| + | while prevdata: | ||
| + | prevdata = stdout.channel.recv(1024) | ||
| + | alldata += prevdata | ||
| + | |||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | <file python ssh_ssh_test.py> | ||
| + | from ssh.session import Session | ||
| + | from ssh import options | ||
| + | # Username für Login | ||
| + | USERNAME= ' | ||
| + | # Zielmaschine hier mikrotik | ||
| + | HOST = ' | ||
| + | |||
| + | # Aufbau der ssh-Session | ||
| + | s = Session() | ||
| + | s.options_set(options.HOST, | ||
| + | s.connect() | ||
| + | |||
| + | # Login mit USERNAME | ||
| + | s.userauth_agent(USERNAME) | ||
| + | |||
| + | chan = s.channel_new() | ||
| + | chan.open_session() | ||
| + | chan.request_exec(' | ||
| + | """ | ||
| + | # Ausgabe der Antwort | ||
| + | size, data = chan.read() | ||
| + | while size > 0: | ||
| + | print(data.strip()) | ||
| + | size, data = chan.read() | ||
| + | """ | ||
| + | chan.request_exec(' | ||
| + | chan.request_exec(' | ||
| + | |||
| + | # Ausgabe der Antwort | ||
| + | size, data = chan.read() | ||
| + | while size > 0: | ||
| + | print(data.strip()) | ||
| + | size, data = chan.read() | ||
| + | |||
| + | chan.close() | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== ssh über bash ===== | ||
| + | |||
| + | <code bash ssh_test.sh> | ||
| + | #!/bin/bash | ||
| + | |||
| + | user=" | ||
| + | host=" | ||
| + | ip_addr=" | ||
| + | |||
| + | ssh $user@$host<< | ||
| + | /ip address print | ||
| + | /ip address add address=${ip_addr}/ | ||
| + | /ip address print | ||
| + | EOF | ||
| + | </ | ||
network/shell_scripting.1411067620.txt.gz · Zuletzt geändert: (Externe Bearbeitung)
