Ubuntu
使用 Fabric 響應雙重密碼提示
我正在使用這個 Fabric 函式來嘗試將使用者添加到 Ubuntu 伺服器。它不會引發錯誤,但我無法在腳本完成後使用我嘗試添加的使用者登錄。如果我手動添加使用者,在我執行
adduser myusername
命令後,我會收到兩次提示輸入密碼。在這個腳本中,重複的提示(我稱之為)正在被處理(無效,我相信)通過將密碼兩次傳遞給這個 echo 命令if not sudo("adduser %s | echo -e '%s\n%s\n'" % (new_user,passwd,passwd)).failed:
你能解釋一下如何在這個函式中更恰當地處理它嗎?
def user_add(new_user, passwd=False): """Add new user""" with settings(hide('running', 'stdout', 'stderr'), warn_only=True): # if is_host_up(env.host): if not passwd: passwd = generate_passwd() if not sudo("adduser %s | echo -e '%s\n%s\n'" % (new_user,passwd,passwd)).failed: run('echo "{user} ALL=(ALL:ALL) ALL" >> /etc/sudoers'.format(user=new_user)) ...other code not included
adduser
只是 Debian/Ubuntu 特定於更普通命令的前端useradd
,它在命令行上有多種選項,包括作為選項的預散列密碼-p
。為此,您可能應該useradd
使用所需的選項而不是adduser
.在大多數其他 Linux 發行版上,
adduser
只是符號連結到useradd
,或完全不存在。