假設我不能跑這樣的事情與面料:面料和svn密碼
run("svn update --password 'password' .")
怎麼就傳遞到織物的密碼遠程交互式命令行的正確方法?
的問題是,回購被檢出爲SVN + ssh和我沒有一個HTTP/HTTPS/SVN選項
假設我不能跑這樣的事情與面料:面料和svn密碼
run("svn update --password 'password' .")
怎麼就傳遞到織物的密碼遠程交互式命令行的正確方法?
的問題是,回購被檢出爲SVN + ssh和我沒有一個HTTP/HTTPS/SVN選項
嘗試SSHkey。它允許您無需密碼即可連接到服務器。 在這種情況下,您必須在遠程服務器和回購站之間設置sshkey。
在遠程服務器:生成密鑰對
$ ssh-keygen -t dsa
離開passphase空! 這將產生2個文件
然後,在追加的id_dsa的內容.pub到〜/ .ssh/authorized_keys在回購服務器上。
您的遠程服務器將能夠在不需要任何密碼的情況下更新源代碼樹。
您可能需要提供用戶呢?如果不是的話,你可能會有更好的運氣導出你的repo,並將其tar(本地)上傳+部署在服務器上。如果你在本地運行svn命令,你將能夠得到提示輸入你的用戶名和/或密碼。
我已經試過供應--username開關爲好,沒有任何的運氣。 – hyperboreean 2010-04-01 15:41:37
之前我們遇到了類似於此的問題,並且實際上爲Fabric提出了一項新功能,但我們所採用的開發人員建議使用此功能。
import getpass
password = getpass.getpass('Enter SVN Password: ')
run("svn update --password '%s'" % password)
當織物運行此命令時,這將提示您輸入密碼。
我相信會在結構日誌中顯示您的密碼,但是,更好的選擇是讓SVN提示您輸入密碼並在其中回顯密碼。
run('echo %s | svn update --password' % password)
雖然我不使用SVN,所以恐怕我不確定這是否可能。我希望別人能幫到那裏!
正如我上面所述svn update --password完全不起作用,因爲該選項僅適用於http/https。 – hyperboreean 2010-04-06 13:43:32
我在找的是一種交互式傳遞密碼的自動方式。 – hyperboreean 2010-04-06 13:44:35
那麼,將你的命令回覆到SVN可能還是值得一試的。您應該能夠在交互提示中回顯密碼,但是您的里程可能會有所不同。 – mac 2010-04-07 08:25:11
我對自動交互式命令行的標準答案是「使用Expect」,但是您使用的是Python,所以我會稍微改進以「使用Pexpect」。
將Pexpect集成到Fabric中可能需要一些想法,或者您可能最終會在這種特殊情況下單獨迴歸Pexpect。但這絕對是我會走的路。
你應該看看Fabric's env documentation。有國家說,你應該這樣的事情:
from fabric.api import env
env.user = 'your_user'
env.password = 'your_password'
希望它有幫助!
如果YOUT只想隱藏日誌您的密碼,你可以用這樣的:
from fabric.state import output
def xrun(command, hidden='', *args, **kwargs):
old_state = output.running
output.running = False
print '[%s] run: %s' % (env.host_string, command)
run(command + hidden, *args, **kwargs)
output.running = command
xrun('svn update', '--password "your password"')
希望有人在觀看...... - 是不是將密碼留空是一個壞主意? – rutherford 2012-11-23 20:37:39
是的,一個空的密碼短語一般並不好 - 但並不比將密碼放入腳本更糟 - 在這種情況下,如果密碼不爲空,您需要腳本輸入SSH密碼而不是遠程密碼,所以如果有的話,它不會取得多大成就 – 2013-05-09 15:40:33