2016-05-27 3 views
0


Ich versuche, ein Ruby-Skript aufzurufen, wenn jemand versucht, SSH in den Server (sagen Ubuntu 14.04).
Wie zum Beispiel versucht jemand sich mit ssh root @ serverip anzumelden und mein Ruby-Skript sollte aufgerufen werden und der Login-Prozess sollte nur fortgesetzt werden, wenn das Skript true zurückgibt und wenn false zurückgibt, sollte die Verbindung geschlossen werden.Aufruf eines Prozesses, wenn sich jemand über SSH anmeldet

Wie kann ich das erreichen?

Danke.

+0

Bitte überprüfen Sie den folgenden Link: http://askubuntu.com/questions/397674/run-scripts-automatisch-in-server-after-ssh-connection – SilentMonk

Antwort

1

Sie können versuchen, den Parameter ForceCommand in der Datei sshd_config Ihres Servers zu verwenden. es ist ziemlich einfach und gut online dokumentiert :)

Sie am unteren Rand der Konfigurationsdatei eingeben:

ForceCommand /path/to/script 

nicht so sicher, ob Sie für bestimmte Bedingungen überprüfen und die Verbindung beenden, aber das könnte Sie führen .

1

Ihre Anforderungen zu erfüllen, sollten Sie auch mit $SSH_ORIGINAL_COMMAND Umgebungsvariablen arbeiten, wenn Sie ForceCommand Option:

ForceCommand /path/to/script && $SSH_ORIGINAL_COMMAND 

Ihren Skript Dies wird ausgeführt und auf der Grundlage des Exit-Status der /path/to/script, wird es das laufen Benutzerbefehl oder Beenden der Sitzung.

+0

Das ist toll, aber eine kleine Frage, wie kann ich die Sitzung verlassen aus dem Skript? Wie eine Art von Ausnahme oder etwas zu werfen? Entschuldigung, ich bin sehr neu. –

+0

Wenn das Skript einen Beendigungscode ungleich Null zurückgibt, wird der ursprüngliche Befehl nicht ausgeführt, der Befehl wird beendet und die Sitzung wird beendet. – Jakuje

+0

http://StackOverflow.com/Questions/37488014/usr-bin-en/Ruby-No-Such-File-Or-Directory-at-ssh-Login @Jakuje –

0

Wie von einem Freund in einer Antwort erwähnt, funktionierte exit-Code-basierte Ausführung nicht für mich.

Hier ist eine Abhilfe: -

Wie einige Leute erwähnt, habe ich dies in /etc/ssh/sshd_config

ForceCommand /path/to/script

Dann in dem Skript, das ich die Bash geöffnet, wenn sie bestimmte Bedingungen erfüllt. Zum Beispiel in bash

#!/bin/bash 
if [ condition ] 
then 
bash #This will open bash if condition is satisfied. 
//login 
fi 

Danke allen!

+0

Dies wird grundsätzlich brechen alle Benutzer Befehle auf Kommandozeile (auch 'scp' zum Beispiel). Sie können auch für die Variable' $ SSH_ORIGINAL_COMMAND', wenn es gesetzt ist, versuchen um es auszuführen, aber ja, das ist eine teilweise Abhilfe. – Jakuje