ich möchte eine script erstellen, mit welchem ich automasierte Befehle vie paramiko mit ssh an diverse clients sendne möchte (später so ca. 20).
Mein Problem ist das ich den Code nicht zu lang werden lassen will, daher die Idee für den Schlüssel die Variable "x" zu nehmen (ansonsten müsste man für
jeden host eine einzelne Zeile ergänzen...
Code: Alles auswählen
ssh.connect(z, port=HOSTS["1"]["ssh_port"], username=HOSTS["1"]["username"], password=HOSTS["1"]["pwd"], allow_agent = False)
stdin, stdout, stderr = ssh.exec_command(updatehost, get_pty=True)
stdin.write(HOSTS["1"]["su_pwd"])
stdin.flush()
Code: Alles auswählen
import paramiko
HOSTS = {
"1": {"name": "PC1", "ip": "192.168.1.10", "host_name": "Computer1", "ssh_port": "22", "username": "user1", "pwd": "pw1", "su_pwd": "supwd1\n"},
"2": {"name": "PC2", "ip": "192.168.1.11", "host_name": "Computer2", "ssh_port": "22", "username": "user2", "pwd": "p2w", "su_pwd": "supwd2\n"},
}
# Counter for Nested Hosts Dictonary
x = 0
# TH = TotalHosts
TH=len(HOSTS.keys())
updatehost="sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get clean && sudo apt-get autoremove"
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
while x <= TH:
x = x+1
ssh.connect(HOSTS[x]["ip"], port=HOSTS[x]["ssh_port"], username=HOSTS[x]["username"], password=HOSTS[x]["pwd"], allow_agent = False)
stdin, stdout, stderr = ssh.exec_command(updatehost, get_pty=True)
stdin.write(HOSTS[x]["su_pwd"])
stdin.flush()
for line in iter(stdout.readline, ""):
print(line, end="")
Code: Alles auswählen
Traceback (most recent call last):
File "Z:\Python\ssh_paramiko.py", line 30, in <module>
ssh.connect(HOSTS[x]["ip"], port=HOSTS[x]["ssh_port"], username=HOSTS[x]["username"], password=HOSTS[x]["pwd"], allow_agent = False)
KeyError: 0