2009-05-25 42 views
9

Tôi cần phải viết một tập lệnh PHP để telnet đến một bộ định tuyến, chạy một lệnh và tìm nạp kết quả. không ai biết một thư viện kết nối telnet trong PHP?kết nối telnet bằng cách sử dụng PHP

Cập nhật: Yêu cầu này (như hiển nhiên) đã được thực hiện từ lâu. Cuối cùng tôi phải viết thư viện khách hàng mà tôi cần. Mã cho thư viện này (và nhiều mô-đun khác) là mã nguồn mở và có sẵn trên github. Cảm ơn mọi người vì câu trả lời của bạn.

+0

Tại sao thiếu tùy chọn tên người dùng và mật khẩu ??? – dbndhjefj

Trả lời

2
<?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); 

?> 

làm việc cho tôi. phần đầu tiên sẽ tải tệp ftp lên máy chủ và phần thứ hai sẽ lo trên máy chủ telnet và thực thi chương trình có thể sử dụng tệp bạn vừa tải lên bằng ftp. thử nghiệm nó ngay bây giờ.

+0

Bạn có thể xây dựng trên chuỗi $ header1 không? Điều này gửi một số loại lệnh cấu hình giao thức Telnet, hoặc tôi đọc quá xa vào ví dụ của bạn? – dctucker

4

sử dụng stdin/stream_select & chặn suối mang đến cho bạn một 20 dòng telnet như khách hàng

<? 

$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); 
Các vấn đề liên quan