Ubuntu

使用 Fabric 響應雙重密碼提示

  • July 27, 2014

我正在使用這個 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,或完全不存在。

引用自:https://serverfault.com/questions/615748