我正在构建一个web控件,它将让我们的初级IT员工管理我们LifeSize手机上的固件。目前,我们通过将新固件上传到中央服务器,然后对每个要升级的电话运行此命令来完成此操作
cat new_firmware.cramfs | ssh -T cli@1.1.1.1 "upgrade all"这会要求我输入密码,然后上传固件。像冠军一样工作,但它需要一个人熟悉CLI工具,SSH访问此服务器,并耐心查找所有电话的所有IP。
看起来我们被密码登录卡住了,使用证书进行测试是灾难性的。被操作的设备并不是一台功能齐全的计算机,而是一部运行微型、专有嵌入式操作系统的电话。
我正在编写一个PHP脚本,它可以遍历所有的手机,但基本上复制了这个函数。这就是我到目前为止所知道的:
<?php
$firmware_filename = "new_firmware.cramfs";
$firmware_stream = fopen($firmware_filename,"rb");
$ssh_connection = ssh2_connect("1.1.1.1", 22);
ssh2_auth_password($ssh_connection, "cli", "password");
$ssh_stream = ssh2_exec($ssh_connection,'upgrade all');
$written = stream_copy_to_stream($firmware_stream,$ssh_stream,-1);
if($written != filesize($full_filename)){
echo "The file is " . filesize($firmware_filename) . " bytes, I only wrote $written" . PHP_EOL;
}else{
echo "All Good" . PHP_EOL;
}
?>但这总是会返回
The file is 26988590 bytes, I only wrote 8192并且升级不能正常进行。
发布于 2009-09-22 22:30:43
嗯,你可以简单地调用
system('cat new_firmware.cramfs | ssh -T cli@1.1.1.1 "upgrade all"');然后用你的vars替换:
system('cat ' . $firmware . ' | ssh -T ' . $username . '@' . $host . ' "upgrade all"');这对你来说是一个解决方案吗?
您可以通过将证书文件放入.ssh目录来自动执行ssh访问。阅读有关SSH login without password的信息。
问候
发布于 2009-09-22 22:35:56
您可以尝试以下几种方法:
执行shell命令
https://stackoverflow.com/questions/1462957
复制相似问题