我想通过我的api更改用户密码,但我当前的代码不工作
也许有人能帮我。
$cmd1 = "passwd ".$info['instanceFtpUser'];
$ssh->exec($cmd1."'n");
$ssh->exec($newpass."'n");
$ssh->exec($newpass."'n");
$ssh->disconnect();
btw,我使用phpseclib
你的用例是一个关于phpseclib文档的例子:http://phpseclib.sourceforge.net/ssh/pty.html
正如您在上面看到的,您应该使用write
输出到PTY,而不是exec
:
$ssh->enablePTY();
$cmd1 = "passwd ".$info['instanceFtpUser'];
$ssh->exec($cmd1);
echo $ssh->read('password:');
$ssh->write($newpass."'n");
echo $ssh->read('password:');
$ssh->write($newpass."'n");
$ssh->disconnect();
您还可以使用sshpass (https://sourceforge.net/projects/sshpass/),它允许您ssh到远程服务器而无需询问密码。您可以创建一个脚本,SSH到远程服务器并设置新密码。然后可以使用PHP的exec函数调用这个脚本。