ubuntuusers.de

dialog mittel ssh auf anderer Maschine ausführen

Status: Gelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

Sonie

Avatar von Sonie

Anmeldungsdatum:
1. Mai 2012

Beiträge: 135

Wohnort: Höchst im Odenwald

ich möchte auf einer anderen Maschine mittels SCP Dateien herunterladen und das scripten. für die Verbindung ist nur ssh/scp erlaubt, keine passphrasen. natürlich kann ich mich auf der zielmaschine anmelden und dann mit scp die entsprechenden files kopieren, meine idee ist, einen auswahl dialog auf der anderen maschine zu starten, mit rückgabe des dateinamens.

also manuell ssh zielrechner cd .../verzeichnis scp file ... zumeinemrechner exit

als Oberfläche würd ich gerne dialog benutzen

1
dialog --fselect "/" "" 70 0 

gibt mir auch als string den gewünschten string zurück

ich versuche das per script so auszuführen

1
file=$(sshpass -p password ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5  root@source-server dialog --stdout --fselect "/" "" 70 0)

bringt aber einen fehler, kann mir da jemand einen tipp geben?

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Sonie schrieb:

bringt aber einen fehler

Da hilft eine Lösung. Richtig fragen.

Sonie

(Themenstarter)
Avatar von Sonie

Anmeldungsdatum:
1. Mai 2012

Beiträge: 135

Wohnort: Höchst im Odenwald

bringt den Fehler:

"Error opening terminal: unknown."

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Da fehlt der Parameter -t im SSH-Kommando. Dieser bewirkt, dass eine Pseudo-TTY-Schnittstelle zugeordnet wird. Nur auf dieser lässt sich ein Dialog-Fenster darstellen. Sollte die Fehlermeldung "Can't make new window [...]" kommen, dann musst du ggf. die Breite/Höhe des Dialogs anpassen.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

Ich bin mir nicht sicher, ob ich es richtig verstanden habe.

Geht es um 3 Rechner, den, an dem Du arbeitest, den Quell- und den Zielrechner, oder nur um zwei und Du willst etwas vom Quellrechner zu Deinem hochladen (push, nicht runterladen - pull)? Zielrechner ist ja das Ziel des Kopiervorgangs. Der Rechner, von dem es kommt ist der Quellrechner, nicht der Rechner von dem Du kommst.

Sonie

(Themenstarter)
Avatar von Sonie

Anmeldungsdatum:
1. Mai 2012

Beiträge: 135

Wohnort: Höchst im Odenwald

danke, passt so schon, es sind drei rechner. du hast mir aber damit sehr geholfen.

vielen dank nochmal...

zu früh gefreut, ich muss ja noch das ergebnis der auswahl in einer lokalen variable speichern, da kommt aber seitens ssh nix mehr zurück...

Sonie

(Themenstarter)
Avatar von Sonie

Anmeldungsdatum:
1. Mai 2012

Beiträge: 135

Wohnort: Höchst im Odenwald

user_unknown schrieb:

Ich bin mir nicht sicher, ob ich es richtig verstanden habe.

Geht es um 3 Rechner, den, an dem Du arbeitest, den Quell- und den Zielrechner, oder nur um zwei und Du willst etwas vom Quellrechner zu Deinem hochladen (push, nicht runterladen - pull)? Zielrechner ist ja das Ziel des Kopiervorgangs. Der Rechner, von dem es kommt ist der Quellrechner, nicht der Rechner von dem Du kommst.

ich habe einen Quellrechner, vorkompilierte Pakete, die dort abgelegt sind, aber der Pfad ist nur bedingt scriptbar. ich habe meinen Arbeitsplatz, von dem ich aus mit ssh die files auf meinen pc kopieren und dann auf´s Zielsystem bringen kann ich habe einen Zielrechner, der blank installiert ist und außer ssh keine weitere verbindung erlaubt. die rechner können nur über meinen arbeitsplatz kommunizieren. ein direkter tunnel ist nicht möglich.

Sonie

(Themenstarter)
Avatar von Sonie

Anmeldungsdatum:
1. Mai 2012

Beiträge: 135

Wohnort: Höchst im Odenwald

Sonie schrieb:

ich möchte auf einer anderen Maschine mittels SCP Dateien herunterladen und das scripten. für die Verbindung ist nur ssh/scp erlaubt, keine passphrasen. natürlich kann ich mich auf der zielmaschine anmelden und dann mit scp die entsprechenden files kopieren, meine idee ist, einen auswahl dialog auf der anderen maschine zu starten, mit rückgabe des dateinamens.

also manuell ssh zielrechner cd .../verzeichnis scp file ... zumeinemrechner exit

als Oberfläche würd ich gerne dialog benutzen, läßt sich per ssh auf die Zielmaschine schicken, wichtig dabei --stdout, damit dialog die Bildschirmausgabe richtig weiterleitet"

1
2
3
4
5
6
7
8
9
password="Password"
source="zielmaschine" #oder IP
source_path="/opt/"
source_user="anwender"

# dialog zum auswählen einer Datei
FILE= $(sshpass -p $password ssh -o StrictHostKeyChecking=no -o ConnectTimeout=5 -t $source_user@$source dialog --stdout --fselect "$source_path" "" 10 60 3>&1 1>&2 2>&3 )
# Datei kopieren mittels SCP
sshpass -p $password scp $source_user@$source/$FILE /tmp

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Auf korrektes "Qouting" hatte ich Dich schon im Nachbarstrang hingewiesen ...

Hier "quotest" Du wieder, wo es gar nicht nötig ist: in den Zeilen 1-4 kommt nirgends ein Leerzeichen oder sowas vor - also: was sollen da die "Quotes" ??

Umgekehrt: theoretisch könnte in Zeile 9 $FILE" doch durchaus sowas enthalten, oder ? - dann gehört es auch "gequotet".
In Zeile 7 hast Du es ja auch gemacht.

Dort verstehe ich allerdings nicht, was für einen üblen Trick Du mit dem Leerzeichen nach dem "=" ziehst.
Sowas erzeugt nämlich ganz wilde Effekte: (um nicht zu sagen: Sicherheitslücken)

track@track:~$ file= $(date)
Do: Befehl nicht gefunden.
track@track:~$ echo $file

track@track:~$ file=$(date)
track@track:~$ echo $file
Do 1. Sep 12:39:08 CEST 2016 

Du solltest mir anhand unseres Wiki bitte mal erklären, was in meinem 1. Beispiel geschieht !
- sonst glaube ich Dir nicht, dass Du weißt, was Du da machst.

LG,

track

Sonie

(Themenstarter)
Avatar von Sonie

Anmeldungsdatum:
1. Mai 2012

Beiträge: 135

Wohnort: Höchst im Odenwald

track schrieb:

track@track:~$ file= $(date) Do: Befehl nicht gefunden. track@track:~$ echo $file

track@track:~$ file=$(date) track@track:~$ echo $file Do 1. Sep 12:39:08 CEST 2016 }}}Du solltest mir anhand unseres Wiki bitte mal erklären, was in meinem 1. Beispiel geschieht !
- sonst glaube ich Dir nicht, dass Du weißt, was Du da machst.

Hallo Track, danke für den Hinweis, natürlich muss das Leerzeichen da raus. Ich hab auch schon ein paar mal gesagt, dass ich hier kein Copy und Paste verwenden kann, sondern die Zeilen neu abschreibe, da kann mir sowas beim blind tippen leider passieren. Was Zeile 9 angeht, natürlich könnten dateinamen auch Leerzeichen beinhalten, müßte dann nicht auch IFS anders gesetzt werden? Dennoch hoffe ich, dass vielleicht jemand mit einem ähnlichen Problem irgendwie geholfen werden kann, generell halte ich es immer für sehr bedenklich, code aus dem web zu übernehmen, ohne die funktionen zu kennen.

Antworten |