2017-04-11 5 views
0

Ich habe Linux Remote-Computer, die ein Skript auf den Login-Versuch, die es das Skript ausführen wird, und es erfordern die Benutzereingaben.Die Eingabe von automatisch ausführen Benutzeranmeldung mit SSH ausführen Befehl

Die Hauptabsicht besteht darin, den Login-Benutzer, das Passwort mit der Auto-Scripts-Antwort aus der Ferne zu testen, wenn sich der Benutzer anmeldet.

Informationen innerhalb der entfernten Maschine:

$ cat /etc/passwd

entfernter_benutzer: DONTCARE: DONTCARE: DONTCARE: DONTCARE: /usr/bin/somescript.sh

Wenn Benutzer-Login in entfernter_benutzer , das somescript.sh wird ausgeführt.

Der Inhalt des Skripts, die

$ read -p '>' tmp für die Benutzereingabe zu fragen, und ich will nicht das Skript alle Änderungen tun.

Beispiel Login

login: remoteuser 

Password: remoteuserpassword 

Quit Configuration (q, quit) 

Ist es möglich für mich, die Benutzereingabe mit ssh Befehl zu senden? Derzeit mein Ansatz wird mit paramiko ssh,

connection = paramiko.SSHClient() mit exec_command

aber noch immer nicht, es zu diesem Skript zu übergeben die Eingabe in der richtigen Reihenfolge oder nicht zu senden.

$ echo q zum paramiko exec connection.exec_command('echo q')

ich nicht Login verwenden wie von der Wurzel dieses Remote-Benutzer zu testen, da es nicht für Passwort fragt.

echo q | su - remoteuser

Antwort

0

Ich endete mit fabric.

from fabric.tasks import execute 
from fabric.api import run, settings, env 

def remoteuser_login(self): 
    env.user = 'remoteuser' 
    env.password = 'remotepassword' 
    with settings(prompts={'>': 'q\n'}): 
     run('exit') 

und auszuführen, dass

execute(remoteuser_login, host='ipaddress') 
0

Ist es möglich für mich, die Benutzereingabe mit ssh Befehl zu senden?

Nicht, es sei denn, Sie ändern das Skript. SSH Griffe Ihr Skript als Benutzer Shell (es sei denn, Sie auch eine andere Konfiguration in sshd_config haben), was bedeutet, dass sie es mit den folgenden Argumenten ausgeführt wird, wenn Sie einige bieten:

/usr/bin/somescript.sh -c "command" 

Dies ist die gleiche Art und Weise, wie es würde irgendeinen anderen beliebigen Befehl in der Benutzer-Shell mit /usr/bin/bash -c "commnad" ausführen. In Ihrem Fall würde es aussehen

/usr/bin/somescript.sh -c "echo q" 

aber höchstwahrscheinlich die Argumente des Skripts ignoriert werden. Ihr Skript wartet auf die Befehle auf der Standardeingabe und ich glaube, dass Sie diese Eingabe auch in Paramiko bereitstellen können.

+0

mein Hauptziel ist es, den Login-Benutzer und das Passwort mit der auto-Skripte zu testen Antwort, wenn Anmeldung an diesen Benutzer. – sangelion