Ik probeer via PHP een telnet sessie op te zetten echter het scripje wil niet werken
Ik krijg na een tijdje een error: Maximum execution time of 30 seconds exceeded
Ik probeer vanaf een PHP website (welke op een windows server draait) een service te starten/stoppen van een windows machine.
Als ik gewoon een telnet sessie open en het commando sc start servicenaam geef dan wordt de service naam echt gestart. Echter via het PHP script gebeurd er niets.
Dit is het script:
Ik krijg na een tijdje een error: Maximum execution time of 30 seconds exceeded
Ik probeer vanaf een PHP website (welke op een windows server draait) een service te starten/stoppen van een windows machine.
Als ik gewoon een telnet sessie open en het commando sc start servicenaam geef dan wordt de service naam echt gestart. Echter via het PHP script gebeurd er niets.
Dit is het script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
| class PHPTelnet { var $use_usleep=0; var $sleeptime=125000; var $loginsleeptime=1000000; var $fp=NULL; var $loginprompt; function Connect($server,$user,$pass) { $rv=0; $vers=explode('.',PHP_VERSION); $needvers=array(4,3,0); $j=count($vers); $k=count($needvers); if ($k<$j) $j=$k; for ($i=0;$i<$j;$i++) { if (($vers[$i]+0)>$needvers[$i]) break; if (($vers[$i]+0)<$needvers[$i]) return 4; } $this->Disconnect(); if (strlen($server)) { if (preg_match('/[^0-9.]/',$server)) { $ip=gethostbyname($server); if ($ip==$server) { $ip=''; $rv=2; } } else $ip=$server; } else $ip='127.0.0.1'; if (strlen($ip)) { if ($this->fp=fsockopen($ip,23)) { fputs($this->fp,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)); if ($this->use_usleep) usleep($this->sleeptime); else sleep(1); fputs($this->fp,chr(0xFF).chr(0xFC).chr(0x01).chr(0xFF).chr(0xFC). chr(0x22).chr(0xFF).chr(0xFE).chr(0x05).chr(0xFF).chr(0xFC).chr(0x21)); if ($this->use_usleep) usleep($this->sleeptime); else sleep(1); $this->GetResponse($r); $r=explode("\n",$r); $this->loginprompt=$r[count($r)-1]; fputs($this->fp,"$user\r"); if ($this->use_usleep) usleep($this->sleeptime); else sleep(1); fputs($this->fp,"$pass\r"); if ($this->use_usleep) usleep($this->loginsleeptime); else sleep(1); $this->GetResponse($r); $r=explode("\n",$r); if (($r[count($r)-1]=='')||($this->loginprompt==$r[count($r)-1])) { $rv=3; $this->Disconnect(); } } else $rv=1; } return $rv; } function Disconnect($exit=1) { if ($this->fp) { if ($exit) $this->DoCommand('exit',$junk); fclose($this->fp); $this->fp=NULL; } } function DoCommand($c,&$r) { if ($this->fp) { fputs($this->fp,"$c\r"); if ($this->use_usleep) usleep($this->sleeptime); else sleep(1); $this->GetResponse($r); $r=preg_replace("/^.*?\n(.*)\n[^\n]*$/","$1",$r); } return $this->fp?1:0; } function GetResponse(&$r) { $r=''; do { $r.=fread($this->fp,1000); $s=socket_get_status($this->fp); } while ($s['unread_bytes']); } } $telnet = new PHPTelnet(); $result = $telnet->Connect('ip.adres.server','username','pass'); switch ($result) { case 0: $telnet->DoCommand('sc stop bouncer', $result); echo $result; $telnet->Disconnect(); break; case 1: echo 'Connect failed: Unable to open network connection'; break; case 2: echo 'Connect failed: Unknown host'; break; case 3: echo 'Connect failed: Login failed'; break; case 4: echo 'Connect failed: Your PHP version does not support PHP Telnet'; break; } |