2017-06-27 99 views
0

我有一个可移植的版本的Apache和php7在Windows phpseclib1.0.7。我想扩展lib以便利用ssh。利用从网站股票脚本 测试PHP SSH2:超过30秒的最大执行时间

<?php 
include('Net/SSH2.php'); 

$ssh = new Net_SSH2('-Redacted-'); 
if (!$ssh->login('-Redacted-', '-Redacted-')) { 
    exit('Login Failed'); 
} 

echo $ssh->read('[email protected]:~$'); 
$ssh->write("sudo ls -la\n"); 
$output = $ssh->read('#[pP]assword[^:]*:|[email protected]:~\$#', 
NET_SSH2_READ_REGEX); 
echo $output; 
if (preg_match('#[pP]assword[^:]*:#', $output)) { 
    $ssh->write("password\n"); 
    echo $ssh->read('[email protected]:~$'); 
} 
?> 

即使缺少信息,则应该抛出一个错误,而是它给了我

PHP Fatal error: Maximum execution time of 30 seconds exceeded in 
C:\Users\-Redacted-\Desktop\Apache2.2\htdocs\Net\SSH2.php on line 2358 

这里是SSH2.php开始行2351

if (isset($this->keyboard_requests_responses)) { 
for ($i = 0; $i < $num_prompts; $i++) { 
if (strlen($response) < 4) { 
return false; 
} 
extract(unpack('Nlength', $this->_string_shift($response, 4))); 
// prompt - ie. "Password: "; must not be empty 
Line 2358---- $prompt = $this->_string_shift($response, $length); 
//$echo = $this->_string_shift($response) != chr(0); 
foreach ($this->keyboard_requests_responses as $key => $value) { 
if (substr($prompt, 0, strlen($key)) == $key) { 
$responses[] = $value; 
break; 
} 
} 
} 
} 

没有人有任何想法如何解决?

+0

你可以ping远程主机吗? – apokryfos

+0

是否确定您的服务器ssh open是否打开? –

+0

腻子与远程主机一起工作得很好。 – MoonEater916

回答

0

我认为你无法到达www.domain.tld,首先,你必须确保你的系统可以访问www.domain.tld。 你可以用你的代码在一个try-catch块,以得到一个错误

<?php 
include('Net/SSH2.php'); 
try{ 
$ssh = new Net_SSH2('-redacted-'); 
if (!$ssh->login('-redacted-', '-redacted-')) { 
    exit('Login Failed'); 
     } 

echo $ssh->read('[email protected]:~$'); 
$ssh->write("sudo ls -la\n"); 
$output = $ssh->read('#[pP]assword[^:]*:|[email protected]:~\$#', 
NET_SSH2_READ_REGEX); 
echo $output; 
if (preg_match('#[pP]assword[^:]*:#', $output)) { 
    $ssh->write("password\n"); 
    echo $ssh->read('[email protected]:~$'); 
}catch(\Exception $ex){echo "You got an error".$ex->getMessage();} 
?> 

如果你确信主机可达可以扩展最大timout这样的:

ini_set('max_execution_time', 300); 

如果您确定你的主机是正确的,你可以检查你的主机ssh端口是否打开并且工作正常?

+0

我离开了信息泛型,因为我不允许发布连接细节,我可以把主机弄好, – MoonEater916

+0

@ MoonEater916 - 看到PuTTY日志会很有趣 - 你可以通过PuTTY - > Sess离子 - >记录和检查“SSH数据包”单选按钮。然后照常连接。我有一个想法是什么问题(其中包括您使用错误的PW登录),但日志有助于确认这一点。 – neubert

相关问题