Seite 1 von 1
Nach SSH Verbindung Befehl ausführen
Verfasst: Dienstag 1. März 2022, 21:55
von Jnpanzer
Hallo,
ich möchte den VNC Client über SSH starten.
Direkt über die Linux Konsole kann ich den Befehl ausführen.
ssh Verbindung steht.
Der Befehl wird in der Konsole angezeigt, aber der Befehl startet nicht.
Kann mir jemand einen Tipp geben?
Code: Alles auswählen
def btnConnectVNCClick():
host = "192.168.178.1"
port = "22"
username = "Admin"
password = "Admin"
commands=["sudo ../etc/init.d/x11vnc start"]
client = SSHClient()
client.set_missing_host_key_policy(AutoAddPolicy())
try:
client.connect(hostname=host, username=username, password=password)
print("Verbindung zu der IP "+str(host))
except:
print("[!] Verbindung nicht möglich")
exit()
# execute the commands
#time.sleep(10)
for command in commands:
print("="*10, command, "="*10)
stdin, stdout, stderr = client.exec_command(command)
print(stdout.read().decode())
err = stderr.read().decode()
if err:
print(err)
Re: Nach SSH Verbindung Befehl ausführen
Verfasst: Donnerstag 3. März 2022, 10:01
von Jnpanzer
Nachtrag zu meinen Eintrag,
anbei der komplett befehl in Pythen Code.
Das stoppen des VNC Server über SSH funktioniert auf der Linux Maschien.
Auch Abrufen "date" pwd geht.
Könnne solch Befehle wie VNC start nicht über SSH ausgefühert werden, gibt es eine andere Möglichkeit?
Code: Alles auswählen
import locale
import tkinter as tk
import tkinter.font as font
from tkinter import messagebox
import time
from paramiko.client import SSHClient, AutoAddPolicy
from sshtunnel import open_tunnel
from scp import SCPClient
import requests
from threading import Timer, Thread, Event
import subprocess
window = tk.Tk()
# setting attribute
#window.attributes('-fullscreen', True)
window.geometry('600x400')
window.resizable(True, True)
window.title("Servicetool")
#Schriftarte defenieren
txtFont = font.Font(family='Helvetica') # Schriftart
txtWeight = font.Font(weight="bold") # Art der Schriftstärke
txtSize25 = font.Font(size=25) # Schriftgröße
txtSize12 = font.Font(size=12) # Schriftgröße
def btnConnectVNCClick():
host = "192.168.178.1"
port = "22"
username = "Admin"
password = "Admin"
commands=["sudo ../etc/init.d/x11vnc start"]
client = SSHClient()
client.set_missing_host_key_policy(AutoAddPolicy())
try:
client.connect(hostname=host, username=username, password=password)
print("Verbindung zu der IP "+str(host))
except:
print("[!] Verbindung nicht möglich")
exit()
# execute the commands
#time.sleep(10)
for command in commands:
print("="*10, command, "="*10)
stdin, stdout, stderr = client.exec_command(command)
print(stdout.read().decode())
err = stderr.read().decode()
if err:
print(err)
def btnCloseClick():
window.destroy()
btnClose = tk.Button(window, text="Schließen",
#width=10,
#height=100,
padx=5,
pady=3,
#image=photoKommen,
bd=2,
#relief="sunken",
#compound="top",
command=btnCloseClick)
btnClose['font'] = txtFont
btnClose['font'] = txtWeight
btnClose['font'] = txtSize12
btnClose.pack()
btnClose.place(x=500, y=350)
btnConnectVNC = tk.Button(window, text="Start VNC",
width=15,
#height=100,
padx=5,
pady=3,
#image=photoKommen,
bd=2,
#relief="sunken",
#compound="top",
command=btnConnectVNCClick)
btnConnectVNC['font'] = txtFont
btnConnectVNC['font'] = txtWeight
btnConnectVNC['font'] = txtSize12
btnConnectVNC.pack()
btnConnectVNC.place(x=50, y=50)
window.mainloop()
Re: Nach SSH Verbindung Befehl ausführen
Verfasst: Donnerstag 3. März 2022, 10:34
von __deets__
Die .. vor deinem x11vnc Kommando sind falsch. Dadurch wird das au einem relativen Pfad, und du willst einen absoluten. Lass die weg. Die fest kodierten Zugangsdaten sind ein fürchterliches sicherheitsleck. Sowas macht man über den authorized key Mechanismus.
Mein Verdacht läge erstmal auf dem sudo. Geht das ohne Passworteingabe? Und wenn du das ganze ohne Python machst, sondern per ssh auf der Kommandozeile (da kann man auch Kommandos angeben, statt sich einzulegen), geht das?
Re: Nach SSH Verbindung Befehl ausführen
Verfasst: Donnerstag 3. März 2022, 12:04
von Jnpanzer
Hallo __deets__,
Ich hatte das schon ohne Sudo und … gemacht.
Hatte das nur mal getestet. Login wird beim Start des vnc nicht benötigt.
Wenn ich mich Manuel auf die Linux Maschine gehe, kann ich mit den Kommando den vnc Starten.
Das geht ja auch. Nach den manuellen Start des VNC kann ich über das Kommando wie oben beschrieben über Python den vnc Stoppen.
Code: Alles auswählen
commands=[„/etc/init.d/x11vnc stop"]
commands=[„/etc/init.d/x11vnc start"]
Ich habe auch andere Kommandos die ich ausführen will, die auch nicht funktionieren. Entweder es liegt an der Rückmeldung nach der Befehlseingabe da diese mehrere Zeilen sind..
Die SSH Maschine ist im einem Intranet. Das Passwort ändert sich täglich und es sind immer verschiedene IP.
Sicherheit ist nicht mein Problem.
(Hinweis IP, BN und PW sind natürlich bei meinen Beispiel verändert).
Das Linux kann ich nicht verändern. Deshalb möchte ich das so umsetzen.
Ich komme nicht dahinter warum der Befehl nicht ausgeführt wird.
Re: Nach SSH Verbindung Befehl ausführen
Verfasst: Donnerstag 3. März 2022, 12:21
von __deets__
Was heißt das Linux kannst du nicht verändern? Einen key zur autorized_keys hinzuzufügenden muss gehen, sonst könntest du gar nicht auf die Maschine.
An Rückmeldungen kann es nicht liegen, außer du musst das Passwort eingeben bei sudo. Und was passiert, wenn du
ssh user@machine "ein Kommando"
machst, wie auch hier
https://malcontentcomics.com/systemsboy ... a-ssh.html beschrieben - geht das mit deinen gedachten Kommandos? Bevor das , kann es auch in Python nicht gehen.
Re: Nach SSH Verbindung Befehl ausführen
Verfasst: Donnerstag 3. März 2022, 12:29
von Jnpanzer
Sorry doppelt geschrieben
Re: Nach SSH Verbindung Befehl ausführen
Verfasst: Donnerstag 3. März 2022, 12:30
von Jnpanzer
Ich dachte immer das wird so gemacht.
Ich kann mich mit ssh einloggen und das Kommando „uptime“ absetzen mit einer Rückantwort.
Ich schau mir mal den Link an.
Re: Nach SSH Verbindung Befehl ausführen
Verfasst: Donnerstag 3. März 2022, 12:33
von __deets__
Du hast nicht verstanden, was authorized keys sind. Den Begriff kannst du mal recherchieren, dann wird das hoffentlich klarer. Und was ich meine ist eben genau NICHT erstmal einloggen, und DANN was eintippen. Sondern in einem. Das kann wegen dem fehlenden kontrollterminal einen großen Unterschied machen.
Re: Nach SSH Verbindung Befehl ausführen
Verfasst: Donnerstag 3. März 2022, 13:01
von Jnpanzer
Hallo __deets__,
Ok das mit den Kontrollterminal ist jetzt einleuchtend.
Es gehen ohne authorized_keys nicht alle befehle nur ein Tel, desghalb geht "update", date usw. aber keine ifconfig.
Danke für die Hilfe, befasse mich damit mal.
Re: Nach SSH Verbindung Befehl ausführen
Verfasst: Donnerstag 3. März 2022, 13:02
von __deets__
Das klingt danach als ob du da nicht richtig die Anführungsstriche setzt. Soweit ich weiß, muss das Kommando ein String sein. Mehrere sind mehrere Kommandos.
Re: Nach SSH Verbindung Befehl ausführen
Verfasst: Donnerstag 3. März 2022, 13:15
von Jnpanzer
Ne du hatest recht mit den Post mit den Kontrollterminal
Beim Befehl Uprime gehts, bei date bekomme ich eine Rückmledung, bei Ifconfig Kommando nicht bekannt.
Mehrer Commandos gehen mit Komma getrennt.
Rückmeldung date uptime und pwd
Code: Alles auswählen
========== uptime ==========
12:11:05 up 45 days, 3:45, 0 users, load average: 0.12, 0.05, 0.05
========== date ==========
Thu Mar 3 12:11:05 UTC 2022
========== pwd ==========
/root
Rückmeldung bei ifconfig
Has mir aber schon weitergeholfen

Weis nur nicht wie ich es löse, da die Linux Maschinen ich nicht verädern möchte bzw, diese werden immer wieder getauscht und ämdern PW und Software.
Muss mal nachdenken
Re: Nach SSH Verbindung Befehl ausführen
Verfasst: Donnerstag 3. März 2022, 14:24
von paddie
ifconfig liegt wahrscheinlich in /sbin und zum Beispiel bei Debian (bei anderen Distributionen wahrscheinlich auch) ist /sbin bei normalen Usern NICHT in $path. Du müsstest ifconfig mit /sbin/ifconfig aufrufen, dann sollte es gehen.
Re: Nach SSH Verbindung Befehl ausführen
Verfasst: Donnerstag 3. März 2022, 21:56
von nezzcarth
Vorab: Teilweise gehen in deinen Posts die Begriffe Client und Server durcheinander. Ich gehe davon aus, dass du den VNC
Server meinst.
Könnne solch Befehle wie VNC start nicht über SSH ausgefühert werden, gibt es eine andere Möglichkeit?
Das kann man so pauschal nicht sagen. VNC ist erst einmal nur das Protokoll, von dem es verschiedene Implementierungen gibt, bei dir wohl x11vnc. Soweit ich das verstehe, hat das die Eigenschaft, dass schon ein X11-Server mit einer aktiven Sesssion, die dann übertragen wird, laufen muss. Und an der Stelle hängt es sehr von deiner Konfiguration ab, ob das erfolgreich ist, wenn du den Rechner nur per SSH steuerst. Z.B. muss der X11 Server ggf. für den headless Betrieb eingerichtet sein. Für Details s. z. B.:
https://wiki.archlinux.org/title/X11vnc. Eine Alternative kann es sein, eine andere VNC Implementation zu verwenden. (Stoppen eines anderweitig gestarteten Server-Prozesses über SSH ist natürlich kein Problem).
Ansonsten noch: Sowohl 'ifconfig' als auch die Variante, Server-Prozesse über /etc/init.d zu starten, sind unter den meisten modernen Distributionen eigentlich mindestens deprecated oder werden gar nicht mehr unterstützt. Statt ifconfig nimmt man heute unter Linux im allgemeinen 'ip <subbefehl>', während man Prozesse mit systemctl start/stop steuert. Um welche Linux Distribution geht es hier denn?
Re: Nach SSH Verbindung Befehl ausführen
Verfasst: Freitag 4. März 2022, 12:08
von Jnpanzer
Hallo padie,
hallo nezzcarth,
Natürlch ist es ein VNC Sever auf denerr Linux Maschine.
Das ist ein Tinycore Linux.
Danke für den Tipp., aber es ist vermutlich das Problem was __deets__ beschrieben hat, das ich keine Kommndokonsole bekomme, deshalb gehen viele Befehle nicht.
Vermutlich fehlt bei der ssh Verbindung der
KexAlgorithms=+diffie-hellman-group1-sha1.
Code: Alles auswählen
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 Admin@192.168.178.50
so baue ich ein Verbindung auf.
ich weis nicht wie ich dies bei Python übergeben muss.