• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] SSH-Terminal auf LTSP-Konsole funktioniert nicht

tux486

Member
Mojn,

"funktioniert nicht" ist immer eine tolle Beschreibung, ich weiß ;) .

Habe voller Freude das "HowTo: SSH-Terminal auf Konsole legen" von Dr. Glastonbury zur Kenntnis genommen und gleich ausprobiert. Sowas (SSH-Konsole) wollte ich schon immer am LTSP-Client haben.

Mein LTSP Server ist eine SuSE 9.0 Mühle mit LTSP 4.1 (CD von der ISO Datei gebrannt; v4.1.3).

Leider wird bei mir das screen.d Skript nicht korrekt abgearbeitet. An der Stelle, an welcher der Client das SSH-screen.d-Skript abarbeitet, erscheinen am Bildschirm des Client sieben mal hintereinander die Ausgaben der "exports" aller (!?) Umgebungsvariablen am Bildschirm und das System hängt dann. Eine Eingabe via Tastatur scheint zwar möglich (ohne Prompt), wird aber augenscheinlich nicht verarbeitet.
Die via "echo" zu erzeugenden Ausgaben aus dem SSH-screen.d-Skript konnte ich auch nicht entdecken.

Kennt jemand dieses Symptom?

Wollte das nicht direkt an das Howto dranposten, das ist immer so "dauerhaft" am Howto. Wenn das Howto einmal fortgeschrieben wird, hat man alle Beiträge derjenigen dabei, die es nicht gerafft oder gepackt haben (so wie ich ;) ).
 

Dr. Glastonbury

Advanced Hacker
hmmm - das is gemein!

Jetzt schreib ich n HowTo, was nicht geht, was? Öhm, was passiert denn, wenn du das export mal auskommentierst?

Und toll wäre es natürlich, wenn du mir die Zeilen abtippen könntest^^

Ich werd das auf jeden Fall nochmal überprüfen, ob ich da vielleicht was falsch gemacht habe - nur leider bekommt der Terminalserver morgen erstmal ne neue Festplatte, nachdem sich die alte mit Schreib- und Lesefehlern verabschiedet hatte (noch nichtmal nach LowLevel-Format konnte die Disc-Verification erfolgreich abschließen...)

Aber ich melde mich sobald ich das soweit habe ;)
 
OP
T

tux486

Member
Dr. Glastonbury schrieb:
hmmm - das is gemein!

Jetzt schreib ich n HowTo, was nicht geht, was?
Tja, so iss das.
Im Ernst: Entweder ich war zu deppert, dann lerne ich dazu, oder am Howto fehlt vielleicht ein Schritt, dann wird es besser. ;)

Dr. Glastonbury schrieb:
Öhm, was passiert denn, wenn du das export mal auskommentierst?
Werde ich heute abend zu Hause mal probieren. Ich gehe aber davon aus, daß dann die Variablen nicht exportiert werden (zumindest nicht die, die mit dem Skript gesetzt wird).
Nach der Anzeige der exportierten Variablen erschien ja kein Login-Prompt (der aber im Skript definiert wurde).

Dr. Glastonbury schrieb:
Und toll wäre es natürlich, wenn du mir die Zeilen abtippen könntest^^
;) Die Begeisterung wächst ,)

Dr. Glastonbury schrieb:
Ich werd das auf jeden Fall nochmal überprüfen, ob ich da vielleicht was falsch gemacht habe - nur leider bekommt der Terminalserver morgen erstmal ne neue Festplatte, nachdem sich die alte mit Schreib- und Lesefehlern verabschiedet hatte (noch nichtmal nach LowLevel-Format konnte die Disc-Verification erfolgreich abschließen...)

Aber ich melde mich sobald ich das soweit habe ;)
Glückwunsch :(
Jetzt zeigt sich, ob die Datensicherung respektive die Rücksicherung funktioniert...
Viel Glück!
 

Dr. Glastonbury

Advanced Hacker
Hi,
also Daten sind wieder da und ich hab das Script nochmal mit dem geposteten abgeglichen und ich muss dir leider sagen, dass es soweit stimmt.

Es könnte höchstens sein, dass du noch eine ältere LTSP-Version hast, die das Script nicht mag und deswegen die Fehler erscheinen. Ich hab mir das LTSP etwa vor 3 bis 4 Monaten heruntergeladen (ist die Version 4.1 allerdings schon mit dem 2.6er Kernel).
 
OP
T

tux486

Member
Grüß Gott,

da isser, der Fehler:
TTY=`/usr/bin/basename \`/usr/bin/tty\``
[ "${TTY}" = "console" ] && TTY="tty1" # Special case for first screen
Ohne den Backslash funktioniert's einwandfrei!
Code:
TTY=`/usr/bin/basename \`/usr/bin/tty``
[ "${TTY}" = "console" ] && TTY="tty1"    # Special case for first screen

Das hat mir jetzt keine Ruhe gelassen.
Ausprobiert habe ich es heute erneut mit CentOS 4.3 und LTSP v4.1.1.
 

Dr. Glastonbury

Advanced Hacker
Hi,
das freut mich ja schonmal, dass es jetzt funktioniert!
Interessant ist aber das 'Wieso'^^. Ich hab als Grundbaustein für das Script ja das Script von Telnet verwendet und nur einige Parameter angepasst. Und dort ist der Befehl auch mit "\" geschrieben. Vielleicht könntest du mal schauen, was passiert, wenn du das Telnet einzubinden versuchst ;)

Und im Prinzip ist der "\" an der Stelle auch richtig, weil er ja die ` eintkräften soll.....

da müsste jetzt mal n Konsolenguru vorbeischaun^^
 
OP
T

tux486

Member
Grüß Gott Moritz,

bevor ich das "sshlogin" ausprobiert habe, hatte ich es mit "telnet" probiert. Nachdem das funktionierte, habe ich mir gedacht, daß das mit ssh doch auch möglich sein müßte, zumal Du es seinerzeit geschrieben hattest und ich mir daher schon reichlich deppert vorkam, weil ich es trotz Abtippen und mehrmaliger Kontrolle auf Übertragungsfehler, sowie "kopieren und einfügen" nicht gepackt hatte.

Derzeit funktioniert der CentOS 4.3 / LTSP v4.1.1 Server noch nicht zufriedenstellend, weil eben nur Konsolenlogins möglich sind und der "fatale" Fehler, daß Xorg.0.0.log nicht geschrieben werden könne, keine grafische Oberfläche zuläßt (andere Baustelle; vermutlich SELinux, iptables und/oder NFS als potentielle Fehlerquellen im Verdacht). Dennoch zeigt das Funktionieren von "telnet" und "sshlogin", daß über TFTP und NFS korrekt gestartet werden kann (somit scheint wiederum NFS als Fehlerquelle der anderen Baustelle auszuscheiden und auch ein deaktiviertes SELinux und eine deaktivierte Firewall ändern an dem noch immer auftretenden gleichen "X"-Fehler nichts :( ).

Inhaltlich habe ich die beiden Skripte noch nicht verglichen, das kann ich erst heute Abend nachholen. Das "sshlogin" Skript habe ich zusammen mit der "lts.conf" von dem vorhergehenden SuSE 9.0 / LTSP v4.1.1 Server aus der Datensicherung übernommen, d.h. nicht neu abgetippt. Übertragungsfehler möchte ich ausschließen, zumal ich es sicherheitshalber nochmals mit den Skripten sowohl von Deiner Webseite, als auch hier von Linux-Club verglichen habe.

Bei dem Einsatz unter SuSE 9.0 hatte ich mit dem "Backslash" auf dem Bildschirm des Clients lediglich eine ellenlange Auflistung der "export"-Variablen. Mit CentOS 4.3 waren unter der gleichen ellenlangen Auflistung zwei Zeilen mit Fehlerhinweisen. Einmal wurde Zeile 19 mit dem Hinweis auf ein erwartetes Zeichen " ' ' " (ist hier unglücklich wiederzugeben) und einmal Zeile 63 mit dem Hinweis auf ein unerwartetes "EOF" ausgegeben. Der Hinweis auf Zeile 19 brachte mich dann an die Stelle mit dem "Backslash", der Hinweis auf Zeile 63 scheint mir ein Folgefehler durch die fehlerhafte Skriptabarbeitung gewesen zu sein.
 
OP
T

tux486

Member
Grüß Gott Herr Dokder, ;)

augenscheinlich liegt bzw. lag es an unterschiedlichen Einfachhochkommata! :shock:
Es scheint ein Unterschied zu sein, ob das Zeichen " ' " (Taste <#/ '>), " `" oder " ' " (Taste <' / `) verwendet wird. Wenn man das im nachhinein weiß, ist die Sache klar, handelt es sich im Zeichensatz ja um unterschiedliche Zeichen.
Bei einer Betrachtung der Dateien "telnet" für "shell" und "sshlogin" im Unterverzeichnis etc/screen.d des LTSP-Verzeichnisses mit less oder cat fällt das kaum auf, auch der Ausdruck zeigt die Unterschiede nicht wirklich. Mit dem Midnight Commander (mc) habe ich dann aber bemerkt, daß in der Datei für "telnet" (shell) einige Passagen der betreffenden Code-Zeile schwarz hinterlegt dargestellt werden, während das in der Datei "sshlogin" nicht der Fall war. Gut, mit diff wäre das vmtl. auch entdeckt worden :? . Wenn ich die betreffende Zeile aus dem telnet/shell-Skript in das sshlogin Skript übernehme (kopiere), funktioniert es auch mit dem "Backslash".
-> [gelöst]
 

Dr. Glastonbury

Advanced Hacker
Ahh - daher weht der Wind ;)
Ok, ja dann ist schon klar, warum es nicht funktioniert hatte. Das ist bei der Shell ein "kleiner" Unterschied. Die ` bedeuten nämlich, dass an dieser Stelle ein Befehl folgt, der ausgeführt werden soll. So kannst du z.B. einer Variable den Wert aus einem Befehl übergeben:

DEINHOME = `echo $HOME`

als banales Beispiel... und natürlich sehr umständlich ;)

Aber dann ist ja gut, dass sich dort eine Lösung gefunden hat!
 
Oben