我需要編寫一個PHP腳本來telnet到路由器,運行命令並獲取結果。有誰知道PHP中的telnet連接庫嗎?使用PHP的telnet連接
更新:這個要求(很明顯)是很久以前的。最後,我不得不編寫我需要的客戶端庫。該庫(以及更多模塊)的代碼是開源的,可在github上找到。 感謝大家的回答。
我需要編寫一個PHP腳本來telnet到路由器,運行命令並獲取結果。有誰知道PHP中的telnet連接庫嗎?使用PHP的telnet連接
更新:這個要求(很明顯)是很久以前的。最後,我不得不編寫我需要的客戶端庫。該庫(以及更多模塊)的代碼是開源的,可在github上找到。 感謝大家的回答。
<?php
$file = 'somefile.txt';
$remote_file = 'readme.txt';
// set up basic connection
$ftp_server = '127.0.0.1';
$ftp_user_name = 'Till';
$ftp_user_pass = 'Kcp05';
$conn_id = ftp_connect($ftp_server);
// login with username and password
ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// upload a file
ftp_nb_put($conn_id, $remote_file, $file, FTP_ASCII);
// close the connection
echo "$file sent to $ftp_server as $remote_file\n<br/>";
ftp_close($conn_id);
// finished copying the input.dat to the till now, just need to execute the print command.
// That will copy somefile.txt in the same folder as this .php file to the ftp server root dir.
$header1=chr(0xFF).chr(0xFB).chr(0x1F).chr(0xFF).chr(0xFB).chr(0x20).chr(0xFF).chr(0xFB).chr(0x18).chr(0xFF).chr(0xFB).chr(0x27).chr(0xFF).chr(0xFD).chr(0x01).chr(0xFF).chr(0xFB).chr(0x03).chr(0xFF).chr(0xFD).chr(0x03).chr(0xFF).chr(0xFC).chr(0x23).chr(0xFF).chr(0xFC).chr(0x24).chr(0xFF).chr(0xFA).chr(0x1F).chr(0x00).chr(0x50).chr(0x00).chr(0x18).chr(0xFF).chr(0xF0).chr(0xFF).chr(0xFA).chr(0x20).chr(0x00).chr(0x33).chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0x2C).chr(0x33).chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0xFF).chr(0xF0).chr(0xFF).chr(0xFA).chr(0x27).chr(0x00).chr(0xFF).chr(0xF0).chr(0xFF).chr(0xFA).chr(0x18).chr(0x00).chr(0x58).chr(0x54).chr(0x45).chr(0x52).chr(0x4D).chr(0xFF).chr(0xF0);
$fp=pfsockopen("127.0.0.1",23);
echo "Telnet session opening ...";
sleep(4);
fputs($fp,$header1);
sleep(4);
fputs($fp,"Till\r");
sleep(2);
fputs($fp,"Kcp05\r");
sleep(2);
fputs($fp,"notepad\r");
sleep(3);
echo "Telnet session closing ...";
fclose($fp);
?>
爲我工作。第一部分將ftp文件上傳到服務器,第二部分將掛載到telnet服務器上,然後執行一個程序,該程序可以使用您剛剛通過ftp上傳的文件。剛剛測試過。
你能詳細說明$ header1字符串嗎?這是否會發送某種類型的Telnet協議配置命令,或者我對你的例子看得太過分了? – dctucker 2013-06-17 14:16:29
Pear :: Net_Socket:http://pear.php.net/package/Net_Socket 將這個類擴展爲一個簡單的PHP遠程機器人或會話。
使用標準輸入/ stream_select &堵流爲您提供了20條線的telnet類似客戶
<?
$socket = fsockopen("192.168.52.1", 8000);
if(!$socket)return;
stream_set_blocking($socket, 0);
stream_set_blocking(STDIN, 0);
do {
echo "$ ";
$read = array($socket, STDIN); $write = NULL; $except = NULL;
if(!is_resource($socket)) return;
$num_changed_streams = @stream_select($read, $write, $except, null);
if(feof($socket)) return ;
if($num_changed_streams === 0) continue;
if (false === $num_changed_streams) {
/* Error handling */
var_dump($read);
echo "Continue\n";
die;
} elseif ($num_changed_streams > 0) {
echo "\r";
$data = fread($socket, 4096);
if($data !== "")
echo "<<< $data";
$data2 = fread(STDIN, 4096);
if($data2 !== "") {
echo ">>> $data2";
fwrite($socket, trim($data2));
}
}
} while(true);
沒有可用於PHP Telnet連接一個可愛類的尼古拉斯·霍爾的Github上: https://github.com/ngharo/Random-PHP-Classes/blob/master/Telnet.class.php
爲什麼缺少用戶名和密碼選項? – dbndhjefj 2015-01-16 19:09:24