Wer kennt sich aus mit ssh (ganymed ssh lib)

Status
Nicht offen für weitere Antworten.

Nicole81

Aktives Mitglied
Huhu,

ich teste gerade etwas mit ssh und der ganymed ssh Libary.

Angenommen ich bin bereits auf dem Host eingeloggt und möchte nun mit sudo den User wechseln. Das ganze soll nicht über das Terminal sonder via einem JDialog geschehen, d.h. der Benutzer gibt UserName und Passwort in 2 Textfelder ein und ich schicke den sudo Befehl an den Host.
Nun möchte dieser ja ein Passwort von mir.

Wie kann ich das an den Host zurück schicken, damit der Benutzerwechseln stattfindet?

Habe schon einiges probiert allerdings klappt das irgendwie nie. Hier mal ein Lösungsansatz (Habe es auch schon mit Buffered Reader und dem StreamGobbler versucht). So wie es hier am Beispiel ist, bekommen ich das "Password:" als response (seltsamerweise aber vom stderr), wenn ich das pw dann abschicke kommt nochmal ein "\n" vom Host, was ja eigentlich richtig ist oder (komischerweise auch vom stderr)??? Aber wenn ich "whoami" ausführe wurde der Benutzer nicht gewechselt?!?!

Ich weiß, ist grottig programmiert aber soll ja nur zum Testen sein :)
Code:
	public void changeUserAtHost(String userName, char[] password)
	{		
		try
		{
			Session s = getSession();
			
			s.execCommand("sudo su - "+userName);
			
			InputStream stdout = s.getStdout();
			InputStream stderr = s.getStderr();
			OutputStream stdin = s.getStdin();
			byte[] buffer = new byte[8192];
			boolean once = true;
			
			// host antwort einholen
			while (true)
			{
				if ((stdout.available() == 0) && (stderr.available() == 0))
				{
					int conditions = s.waitForCondition(ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA | ChannelCondition.EOF,
							10000);  // TODO: Options

					if ((conditions & ChannelCondition.TIMEOUT) != 0)
					{
						throw new IOException("Timeout while waiting for data from peer.");
					}

					if ((conditions & ChannelCondition.EOF) != 0)
					{
						if ((conditions & (ChannelCondition.STDOUT_DATA | ChannelCondition.STDERR_DATA)) == 0)
						{
							break;
						}
					}
				}

				while (stdout.available() > 0)
				{
					int len = stdout.read(buffer);
					if (len > 0)
					{
						System.out.write(buffer, 0, len);
					}
				}

				while (stderr.available() > 0)
				{
					int len = stderr.read(buffer);
					if (len > 0)
					{
						System.out.write(buffer, 0, len);
					}
				}
// password senden
				if (once)
				{
					for (char c : password)
						stdin.write(c);
					
					stdin.write(13);  // == \n
					
					once = false;
				}
			}
		}
		catch (IOException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

Ich danke euch schon mal jungs.

Liebe Grüße Nicole
 

roman007

Neues Mitglied
Hi Nicole,


ich sitze am gleichen Problem und weiss auch net weiter.
Ich weiss nur, dass eine neue Konsole aufgemacht wird und wir an diese nicht rankommen. Merkt man im "normalem" Betrieb nicht, soll aber so sein.

Weiss hier jemand was?

Grüße
Roman
 
G

Guest

Gast
Ganymed heisst jetzt "Trilead SSH-2 for Java" und steht hier als Open Source zur Verfügung: Trilead SSH-2 for Java. Dort gibts auch ein Forum, da wird einem geholfen =)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
X RMI: Woher kennt der Client das Schnittstellen-Interface? Netzwerkprogrammierung 2
ven000m Frage aus einer mündl. Prüfung - wer kennt die Antwort? Netzwerkprogrammierung 6
T Socket Java Programm hängt sich auf bei dem versuch von einem Socket scanner Daten zu erhalten. Netzwerkprogrammierung 1
X Socket [Anfänger] BufferedReader.readLine() lässt sich Zeit Netzwerkprogrammierung 1
F FTP FTPClient Datei lässt sich nicht öffnen Netzwerkprogrammierung 4
I Swing hängt sich auf bei Verbindung zum Server Netzwerkprogrammierung 3
B udp erkennen um welches objekt es sich handelt / max size Netzwerkprogrammierung 5
H RMI Stubs and Skeletons lassen sich nicht erstellen Netzwerkprogrammierung 4
H Socket Client server,verbindung läst sich nicht abbauen&code optimierung Netzwerkprogrammierung 3
P Warum lässt sich mein Server und mein Client einfach nicht schließen?!?! Netzwerkprogrammierung 16
C komisches Problem / ObjectInputStream erstellt sich nicht Netzwerkprogrammierung 5
M httpclient kann sich nicht auf asp.net Seite anmelden Netzwerkprogrammierung 2
& RMI Server beendet sich selbst Netzwerkprogrammierung 6
A RMI: Wieviele Clients können sich gleichzeitig anmelden? Netzwerkprogrammierung 34
D Server schliesst sich automatisch mit Client Netzwerkprogrammierung 3
G Vector aktualisiert sich nicht? Netzwerkprogrammierung 6
TRunKX Threads beenden sich selber? Netzwerkprogrammierung 6
D DynDNS-Adresse ändert sich während Server pollt Netzwerkprogrammierung 2
V ganymed Illegal sftp packet len WS_FTP Netzwerkprogrammierung 2
1 Ganymed SSH-2, Disconnect merken Netzwerkprogrammierung 2
M ganymed-ssh2.jar: Verzeichnis wechseln Netzwerkprogrammierung 3
M ganymed-ssh2.har: ftp-Verbindung über ftp-Proxy Netzwerkprogrammierung 2
pun ganymed ssh2 Prob Netzwerkprogrammierung 2

Ähnliche Java Themen


Oben