Bash befehl möglichst unsichtbar ausführen

qupfer

Mitglied
Thread Starter
Dabei seit
01.03.2009
Beiträge
36
Reaktionspunkte
0
Hi,

ich würde gerne einen Bash-Befehl möglichst unsichtbar ausführen
Code:
sleep 30 && ssh -D 4444 -L 1111:localhost:3389 -L 2222:localhost:8080 -L 3333:localhost:8081  -i id_dsa user@2001:xxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx
der sleep dient nur dazu, dem MacBook genügend Zeit zu lassen, den ipv6 tunnel aufzubauen ;)

Momentan steht der "Befehl" in einer ssh.command und wird per Anmeldeobjekt gestartet, dabei öffnet sich natürlich ein Terminalfenster und auch das Terminal-Symbol in der Taskl. äh im Dock^^
Würde gerne, sofern möglich, beides verhindern.
Hatte schon den Gedanken, das Terminalfenster mittels Spaces auf einen anderen "Desktop" zu legen, aber so wirklich elegant wär das auch nicht.

Gibts da irgend einen Trick?

Danke
 
Lass es in einem Applescript laufen, dann sieht man es "fast" nicht.

Code:
do shell script "blabla >/dev/null 2>&1 &"
 
Zuletzt bearbeitet:
Danke für die beiden Hinweise,
im ersten fall pasiert leider rein garnichts :(
Code:
tell current application
	do shell script "ssh -D 4444 user@host -i id_dsa >/dev/null 2>&1 &"
		--> ""
end tell
Ergebnis:
""
Das ergebnis hat er nach ca. 1sekunde.

Gebe ich
do shell script "ssh -D 4444 name@host" ein, passiert zwar auch nix, aber bis das Ergebniss "" kommt, dauert es "immerhin" ein paar sekunden.


Und zum zweiten Lösungsvorschlag - Da versteh ich nur Bahnhof *g
 
das problem mit do shell script ist der background job...
der denkt das ist ohne fehler beendet worden und macht auch die shell zu...
natürlich ist das nicht so der sinn, wenn du einen tunnel machen willst...
mach dir einfach mit lingon einen launchd job...
 
Und zum zweiten Lösungsvorschlag - Da versteh ich nur Bahnhof *g
Du solltest schon genauer erläutern, was Du nicht verstehst …
Wenn Dir das XML-Bearbeiten zuviel ist, kannst Du auch mit Lingon einen LaunchAgent erstellen (oder einen LaunchDaemon, je nach Anwendungsfall).
 
Ähh, nohup vergessen.

do shell script "nohup ssh..."

So sollte es gehen. Kann's ohne Mac leider nicht testen.
 
mit do shell script "nohup ssh..." bricht er leider genauso ab wie ohne...
Hab nun noch versucht mitt lingon das hinzubiegen, aber das klappt auch nicht so richtig.
Habe bei "MyAgents" auf new geklickt und mir einen erstellt, und ich hoffe doch es richtig eingestellt zu haben:
Code:
Label: ssh
ProgramArguments:
/usr/bin/ssh
-D
4444
-i
/Users/username/id_dsa
-l
username
hostname
 
Das Etikett (Label) sollte absolut eindeutig sein, daher empfiehlt es sich nicht, einen generischen Namen wie ssh zu verwenden. Sicherer ist sowas wie private.foobar.ssh-tunnel. Zwar nicht zwingend notwendig, aber dennoch empfehlenswert ist es, die Datei selbst wie das Etikett + .plist zu nennen (also private.foobar.ssh-tunnel.plist)
In Deinem Fall wären wahrscheinlich auch die Optionen Keep it running all the time no matter what happens Run it when it is loaded by the system (at startup or login) (KeepAlive) und (RunAtLoad) sinnvoll.
Lingon sagt zwar, Du müßtest Dich ab- und wieder anmelden, damit der LaunchAgent aktiv wird – es geht aber auch einfacher:
Code:
launchctl load ~/Library/LaunchAgents/private.foobar.ssh.plist

Im Dienstprogramm Konsole kannst Du dann die Statusmeldungen von launchd zu Deinem LaunchAgent prüfen.
 
Jetzt aber...

Code:
do shell script "ssh -t -t ... >/dev/null 2>&1 &"
 
Zurück
Oben Unten