为什么 phpseclib SSH2 不运行命令?

问题描述

我有一个脚本,它使用 PHPSECLIB ver1.0 连接到 ubuntu 服务器并安装 unifi 控制器 ssl 证书。

安装ssl证书的步骤是正确的,问题是代码在write函数中停止,没有运行命令。

如何让我的脚本正确运行所有命令?

<?PHP
set_include_path(get_include_path() . PATH_SEParaTOR . 'PHPseclib');

include ("Crypt/RSA.PHP");
include ("Net/SSH2.PHP");
include ("Net/SFTP.PHP");

$key = new Crypt_RSA();
$key->loadKey(file_get_contents('key.ppk'));

$ip = "my ip";
$username = "ubuntu";

$ssh = new Net_SSH2($ip);
$sftp = new Net_SFTP($ip);
$ssh_login = $ssh->login($username,$key);
$sftp_login = $sftp->login($username,$key);

$pfx_content = file_get_contents("key/test_file.pfx");
$pfx_name = "test_file.pfx";
$pfx_password = "unifiadmin";


if (!$ssh_login) {
    exit("SSH Login Failed");
}

if (!$sftp_login) {
    exit("SFTP Login Failed");
}
$import_key = "";
$import_key .= "sudo keytool -importkeystore -srckeystore";
$import_key .= " $pfx_name -srcstoretype pkcs12 -srcalias 1";
$import_key .= " -destkeystore /usr/lib/unifi/data/keystore";
$import_key .= " -deststoretype jks -destalias unifi";
$import_key .= " -deststorepass aircontrolenterprise";
$import_key .= " -srcstorepass unifiadmin";

$migrate_key = "";
$migrate_key .= " sudo keytool -importkeystore -srckeystore";
$migrate_key .= " /usr/lib/unifi/data/keystore -srcstoretype JKS ";
$migrate_key .= " -destkeystore /usr/lib/unifi/data/keystore ";
$migrate_key .= " -deststoretype PKCS12 ";
$migrate_key .= " -srcstorepass aircontrolenterprise";
$migrate_key .= " -destkeypass unifiadmin";

function get_prompt($ssh){
    echo "<pre>".$ssh->read("[prompt]")."</pre>";
}

$upload_pfx = $sftp->put($pfx_name,$pfx_content);

$ssh->exec("clear");
get_prompt($ssh);

$ssh->write("sudo service unifi stop\n");
get_prompt($ssh);

$ssh->write("ls\n");
get_prompt($ssh);

$ssh->write($import_key."\n");
get_prompt($ssh);

$ssh->write("yes\n");
get_prompt($ssh);

$ssh->write($migrate_key."\n");
get_prompt($ssh);

$ssh->write($pfx_password."\n");
get_prompt($ssh);

$ssh->write("sudo service unifi restart\n");
get_prompt($ssh);

$ssh->write("sudo service unifi start\n");
get_prompt($ssh);```

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...