2013-08-22 79 views
0

我正在嘗試更改密碼。首先,我必須以root身份登錄,但我不知道確切的密碼,所以我需要嘗試3個不同的密碼。我發現了一個解決方案,但我無法進入if語句。如果第一個密碼不正確,我想嘗試另一個密碼。如果條件爲空,我就離開了,因爲我嘗試了幾件事情,但都沒有成功。以root身份登錄並嘗試在php中使用不同的密碼

if (!$ssh->login('ntsysadm', 'ABCD123')) { 
    echo" Login Failed to server". $iplist[$i]; 
}else{ 
    echo "<br>"; 
    echo "Connected to ".$iplist[$i]; 
    echo "<br>"; 
    $ssh->write("su - root\n"); 
    $ssh->read('Password:'); 
    $ssh->write("ABCD123\n"); 
    if () { 
     $ssh->write("su - root\n"); 
     $ssh->read('Password:'); 
     $ssh->write("ABC123\n"); 
     if () { 
      $ssh->write("su - root\n"); 
      $ssh->read('Password:'); 
      $ssh->write("ABC1234\n");} } 
      $ssh->read('#'); 
      $ssh->write("passwd ".$_POST['username']."\n"); 
      $ssh->read('password:'); 
      $ssh->write($_POST['newpassword']."\n"); 
      $ssh->read('password:'); 
      $ssh->write($_POST['newpassword']."\n"); 
      echo $logDetail = $ssh->read('successfully.'); 
      echo "<br>"; 
      mysql_query("INSERT INTO log VALUES ('','".$_SESSION['fullname']."','".$idlabuser."','".$serverId."','".$command."','".$datetime."','".$logDetail."') "); 
    } 
+0

你有一些奇怪的代碼格式!很難這樣讀... –

+0

感謝您編輯Class。 –

+0

而不是多個IF語句,你最好用一個循環。就你的第一個IF而言,你不需要做任何進一步的處理,可以添加一些print語句來查看進度,並嘗試將$ ssh-> login的結果放入一個變量中,以查看它真正返回的結果。 – acutesoftware

回答

0
$passwords = array('pass1', 'pass2', 'pass3'); 

if (!$ssh->login('ntsysadm', 'ABCD123')) { 
    echo "Login failed."; 
    return; 
} 
//No need to use else 
foreach($pass in $passwords) { 
    $ssh->write("su root \n"); 
    $ssh->write(sprintf("%s \n", $pass); 
    if(strstr($ssh->HowIsThisFunctionCalled, 'Logged in')) 
     echo sprintf('Password %s is correct.', $pass); 
    else 
     echo sprintf('Password %s is not correct.', $pass); 
} 

取代「HowIsThisFunctionCalled」與功能,讀出整個終端文本或最後的消息,很肯定這存在於PHPSECLIB。

+0

我無法找到該函數。我只知道如何使用$ ssh-> read('x'),它讀取直到x的行,如果行中沒有「x」,它不起作用。 –

相關問題