Ich versuche ein Programm mit Ruby (und Net :: SSH) zu erstellen, um eine Verbindung zu Servern herzustellen und einige Aufgaben auszuführen. Die Einzelheiten des Servers sind wie vorgesehen, wie etwas sein:Wie verarbeite ich eine URL in Ruby, um die Komponenten (Schema, Benutzername, Passwort, Host, etc) zu extrahieren?
ssh://user:[email protected]:port (for a host that does not yet have SSH keys)
oder
[email protected]
Net :: SSH erwartet das folgende Format:
Net::SSH.start('host', 'user', :password => "password")
Gibt es sind gem/stdlib das kann die URL in dieses Format verarbeiten? Oder eine einfache Regex, die die verschiedenen Teile zusammenbringen kann?
Hinweis: Ich kenne und benutze capistrano, aber in diesem Fall brauche ich niedrigere Kontrolle.
URI funktioniert anscheinend nicht, wenn nur 'user @ host' obwohl gegeben. Was erklärt, wie ich es gestern versucht habe, bevor ich die Frage gestellt habe und dachte, dass es die Komponenten nicht extrahiert hat. (Nach dem Testen - weder adressierbar/uri) –
'Benutzer @ Host' ist nicht genug Info für die Parser, etwas Nützliches zu tun. Es könnte als E-Mail-Adressfragment oder als Benutzer eines Hostfragments interpretiert werden. Da es zweideutig ist, möchte ich, dass die Parser ablegen. Sie könnten das leicht genug erfassen und analysieren und das fehlende Schema ("ssh:") liefern, aber das liegt daran, dass Sie spezielle Kenntnisse über das Problem haben, die die Parser nicht haben. –
Stimmt, das habe ich heute Morgen gedacht. –