[英]Parse “passwd” command with phpseclib
我試圖使用phpseclib將“ passwd”命令解析到我的機器上,但是無法通過第一個密碼輸入。 看下面的代碼。
$ssh->write("
passwd $new_user\n
$new_user_pw\n
$new_user_pw\n
");
$ssh->setTimeout(5);
echo $ssh->read('root@machine:~$');
我得到的輸出是:
Last login: Tue Jun 17 12:23:01 2014 from 109.175.60.43 [root@machine ~]# [root@machine ~]# [root@machine ~]# passwd 8917f498 Changing password for user 8917f498. New password:
還是我可以用其他方式做到這一點?
謝謝
好,我把它修好了。
此代碼有效:
$ssh->enablePTY();
$ssh->exec('passwd $new_user');
echo $ssh->read('password:');
$ssh->write("$new_pw\n");
$ssh->setTimeout(3);
$ssh->write("$new_pw\n");
$ssh->setTimeout(3);
echo $ssh->read('password changed');
如果您自己設置密碼,則系統會提示您輸入舊密碼,然后再設置新密碼。 在我的Linux系統上,如果沒有root用戶,就無法對另一個用戶進行passwd操作。 這也可能會提示您輸入密碼。
通常,我發現提示的方法是通過使用空的$ ssh-> read()調用$ ssh-> setTimeout()。 例如。
$ssh->enablePTY();
$ssh->exec('sudo passwd testuser');
$ssh->setTimeout(3);
echo $ssh->read();
輸出Enter new UNIX password:
。 因此,我以此方式重寫了程序:
$ssh->enablePTY();
$ssh->exec('sudo passwd testuser');
$ssh->setTimeout(3);
$ssh->read('password:');
$ssh->write("newpw\n");
echo $ssh->read();
輸出Retype new UNIX password:
。 因此,我隨后相應地修改了程序:
$ssh->enablePTY();
$ssh->exec('sudo passwd testuser');
$ssh->setTimeout(3);
$ssh->read('password:');
$ssh->write("newpw\n");
$ssh->read('password:');
$ssh->write("newpw\n");
echo $ssh->read();
輸出passwd: password updated successfully
。 現在我知道它可以工作了,我刪除了$ ssh-> setTimeout(3)並更新了最后一個$ ssh-> read()來獲取此信息:
$ssh->enablePTY();
$ssh->exec('sudo passwd testuser');
$ssh->read('password:');
$ssh->write("newpw\n");
$ssh->read('password:');
$ssh->write("newpw\n");
$ssh->read('passwd:');
就是這樣! 它將像您的版本一樣更改密碼,而無需等待六秒鍾。 最后的$ ssh-> read()可能不是必需的。 我會讓你玩這個。
使用單個襯管是更好的選擇。 我更喜歡使用這個:
$username = 'root';
$password = 'myReallySecurePassword';
$ssh->exec(sprintf('echo "%s" | sudo passwd --stdin %s', $password, $username));
以上適用於大多數現代Linux發行版。 如果您無法以某種方式更改密碼並無法運行舊版Linux發行版,請嘗試以下操作:
$username = 'root';
$password = 'myReallySecurePassword';
$ssh->exec(sprintf('echo -e "%s\n%s" | passwd %s', $password, $password, $username));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.