Próbowałem napisać małą bibliotekę za pomocą Thora, aby pomóc mi w szybkim tworzeniu nowych projektów i stron. Napisałem tę małą metodę:Net :: Polecenie SSH sudo zawiesza się po wprowadzeniu hasła
def ssh(cmd)
Net::SSH.start(server_ip, user, :port => port) do |session|
session.exec cmd
end
end
po prostu pomóc mi w uruchamianiu szybkich poleceń na zdalnych serwerach w razie potrzeby.
Problem polega na tym, że jeśli potrzebuję wykonać polecenie pod sudo na zdalnym końcu, skrypt wydaje mi się zawieszony. Na przykład podczas wykonywania tego ...
ssh("sudo cp #{file_from_path} #{file_to_path}")
Skrypt zapyta mnie o hasło
[sudo] password for user:
Ale wtedy cały hhangs rzeczą po wpisaniu go w.
Czy ktoś się z wiedzą dlaczego wisi dokładnie i co mogę zrobić, aby uruchomić polecenie sudo na zdalnym serwerze pod Net :: SSH (lub inną alternatywą)?
* uwaga: zanim zasugerowałem, początkowo zacząłem pisać tę bibliotekę jako przepis pod Capistrano, dopóki nie natknąłem się na Thora i pomyślałem, że to dobra okazja, aby go wypróbować. Nie jestem przeciwny konieczności przeniesienia całości z powrotem do Capistrano, jeśli to konieczne, ale byłbym naprawdę zaskoczony, gdyby nie było łatwego sposobu uruchamiania poleceń sudo na zdalnym serwerze.
Czy możesz podać hasło? 'ssh (" sudo cp # {from} # {to} <"mysupass") ' – Fosco
oczywiście zapomniałem uciec z podwójnych cytatów z poprzedniego komentarza – Fosco
Próbowałem tego, ale to nie działa. "bash: mysupass: Brak takiego pliku lub katalogu." Czy jest to próba podania hasła do wiersza? Jeśli tak, pomysł może zadziałać, ale składnia prawdopodobnie jest właśnie wyłączona. Zobaczę, co mogę znaleźć – joeellis