Mit ssh zu Server verbinden und authentifizieren
-
ich sagte r+
-
r+ klappt erst recht nicht, da die funktion entweder nur "w", oder nur "r" annimmt.
http://cermics.enpc.fr/~ts/C/FUNCTIONS/popen.html
-
unter freebsd gehts...
http://www.freebsd.org/cgi/man.cgi?query=popen&apropos=0&sektion=0&manpath=FreeBSD+5.4-RELEASE+and+Ports&format=htmldann bleibt dir nur ein fork(), system() und ein bisschen pipegemetzel uebrig.
-
system geht nicht, da es nicht MT-Safe ist.
mein programm enthaelt threads.
-
dann eben was anderes... (execl?)
hier haste nen code von einem forkenden trojaner fuer unixe. da sieht man zumindest die klempnerarbeit gut:
http://sub7.de/viewtopic.php?t=3031&highlight=pipe+fork
-
Ouuuuhh.. ich will doch keinen Trojaner bauen
execl ist fuerchte ich auch nicht das richtige.
Das Problem ist doch eigentlich ein ganz generelles.
Ich kann doch eigentlich nicht der erste sein, der irgendein
externes Programm, z.B. Beispiel "/usr/bin/ssh -l user localhost" starten
und dann den I/O des Programms steuern und nicht sofort ein terminate() erhalten will.
Mir kommt das Problem so... simpel vor. Ich kriegs halt nur nicht geloest, weil ich kein eingefleischter C Hacker unter Unix bin,
der alle moeglichen stdlib functions kennt.Kann mir wirklich keiner 10 Zeilen Code posten, die das Problem loesen?
Wuerde mir echt helfen!
-
ich hab das problem auch und fork() find ich irgendwie mittelalterlich (auch wenns seine staerken haben mag)
-
Hi,
wenn's etwas komplizierter sein darf: libssh. Ich verwende die lib selber und hab' keine Probleme damit. Allerdings nur für linux und evtl. andere "unixe" (afaik)
-
ssh liest nicht aus pipes.
-
Die libssh ist gut
Viel angenehmer zu benutzen, als das Original sshconnect2.c von Tatu Ylonen.
Ist sowieso viel effizienter das Protokoll direkt zu benutzen, als den Umweg ueber die bash zu machen.thx