hm... Irgendwie habe ich hier schon irgendwo gelesen, dass globale Variablen böse sind, daher würde ich diese gerne vermeiden. Aber irgendwie gibt die funktion menu() nicht die Werte zurück, oder ich mache was anderes falsch.
@ Blackjack:
einige Änderungen konnte ich schon umsetzten. Bin heute allerdings immer nur kurz am PC.
Soweit ist jetzt der aktuelle Stand, wenn ich die globallen Variablen auskommentiere, bekomme ich folgende Fehlermeldung:
Traceback (most recent call last):
File "./xssh.py", line 31, in <module>
if srv_nr < counts :
NameError: name 'srv_nr' is not defined
[codebox=pycon file=Unbenannt.txt]
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import subprocess
# Serverliste
# Der Syntax kann aus den Beispielen entnommen werden,
# das Komma am ende der Zeile (ausser beim letzten Eintrag) darf nicht vergessen werden
# servername,serveradresse,port
SERVERS =[["Server1","server.de",444],
["Server-lokal", "server", 22],
["Server-extern", "server.selfhost.eu", 32]
]
def connect(x):
subprocess.call(["ssh", str(SERVERS[x][1]), "-p", str(SERVERS[x][2])])
def menu():
#global srv_nr
#global counts
print("{0:<4}{1:<14}{2:<20}{3:<5}".format("Nr.", "Servername", "Adresse", "Port"))
for server_count, (name, host, port) in enumerate(SERVERS):
print("{0:<4}{1:<14}{2:<20}{3:<5}".format(server_count, name, host, port))
counts = len(SERVERS)
srv_nr = int(input("Bitte Servernummer eingeben: "))
return counts, srv_nr
menu()
if srv_nr < counts :
connect(srv_nr)
else:
print()
print("unültige Eingabe!")
print()
menu()
[/code]