Wie interaktiven SSH-Sitzung

Guten Tag alle

Muss ich ausführen-Befehl auf der linux Maschine dieser Befehl ist interaktiv
Befehl.
Interaktiven Befehl bedeutet, dass eine Eingabe erfordern, wie [ja , Nein] oder Passwort
zweimal

meiner realen Fall ist.
Ich erstelle ein Skript-Befehle ausführen und erhalten Sie die Ausgänge erfolgreich.
aber einige Server Anmeldung Passwort abgelaufen ist, so brauche ich für die Interaktion mit
server versenden Sie das aktuelle Passwort + das neue Kennwort ein(zweimal)

ssh userName@10.0.0.243
userName@10.0.0.243's password:
You are required to change your password immediately (password aged)
Last login: Sun Aug  7 13:15:40 2011 from 10.0.0.28
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user userName.
Changing password for userName
(current) UNIX password:
New UNIX password:
Retype new UNIX password:

Hinweise::

  • Ich bin mit Ruby 1.9.2
  • Ich habe kein problem in dem ausführen-Befehl im normal Fall
  • bitte, ich habe zu vermeiden workarounds wie (echo "pass" | ssh -S), um mir das passieren, alle anderen interaktiven Situationen.
  • Ich bin mit 'net/ssh' libs
  • Das Skript ist im Anhang http://king-sabri.net/files/LinuxHWScanner.rb
  • Ich habe versucht mit "net/ssh/telnet" und es hilft nicht
  • Einige sagen berät mit 'rake/remote_task' ist die Lösung, aber ich kann nicht verstehen, wie es funktioniert in meinem Fall

wenn Sie brauchen mehr Einfachheit, hier einen einfachen code, wenn Sie es machen, was funktioniert ich werde es lösen meine Vorherige Frage

  require 'net/ssh'

  host = "10.0.0.106"
  port = 22     # SSH port
  user = 'root'     # username
  pass = "123123"   # password

Net::SSH.start( host,user,:password => pass, :port=> port , :verbose => :error ) do |session|

 puts session.exec!("passwd root")
end
  • Sie werden wahrscheinlich brauchen, um die request_pty() Funktion führen Sie die passwd(1) Programm.
  • Sie beraten über request_pty() in meinem Fall ?
  • Ich war falsch: aus der Lektüre der Shadow Password Suite-source-code sehe ich, dass gpasswd(1), login(1), su(1), und sulogin(8) alle benötigen, um ausgeführt werden, von einem terminal aus. Aber nicht passwd(1). Gehen Abbildung.
  • Aber Sie hatten Recht in dem Sinne, dass, wenn es automatisch aufgerufen passwd auf login, dann der einzige Weg, um den Begrüßungstext zu Fragen, die Sie zum ändern der pass ist request_pty. afaik..
InformationsquelleAutor KING SABRI | 2011-10-29
Schreibe einen Kommentar