ID: 24123 User updated by: zambrow at hotmail dot com Reported By: zambrow at hotmail dot com -Status: Feedback +Status: Open Bug Type: Program Execution Operating System: Windows 2000 PHP Version: 4.3.2 New Comment:
the fwrite($pipes[1], "exit\r"); was just my mistake i made during debugging but it doesnt change anything I expect to see in pipes[1] the ouput of my telnet session. for example writing ls to pipes[0] should result in pipes[1] having the output of ls command in the running directory. Adding your debugging function does not change anything. The script will still just sit there for a long while and in the end it'll load empty page. Note i'm doing this on Windows 2000 machine. and my target os is AIX. if i run the script on AIX to AIX platform this seems to work Previous Comments: ------------------------------------------------------------------------ [2003-06-11 08:55:42] [EMAIL PROTECTED] Your script is broken (why are you writing "exit" to $pipes[1]?). Can you please indicate what you expect to see, and what you actually end up with? Add this line after the proc_open call: debug_zval_dump($pipes); Also note that for telnet on most unix platforms, you need to run it via the "expect" utility to correctly emulate an interactive tty. (I know this is listed as a win32 issue, but its worth mentioning this in any case). ------------------------------------------------------------------------ [2003-06-11 08:43:09] zambrow at hotmail dot com Apache 1.3.27 with php 4.3.2. I'm tryin to implement a way to do a 2-way communication through telnet for my script here's what I've found! (111.111.111.111 example ip is a unix box and it is accepting telnet connections" Consider this. $failed = false; // authentication failure flag $cmd="telnet 111.111.111.111"; $descriptorspec = array( 0 => array("pipe", "r"), // stdin is a pipe that the child will read from 1 => array("pipe", "w"), // stdout is a pipe that the child will write to 2 => array("pipe", "w") // stderr is a pipe that the child will write to ); $userID="user"; $password="password"; $process = proc_open("$cmd", $descriptorspec, $pipes); echo $process; if (is_resource($process)) { fwrite($pipes[0], "$userID\r"); fwrite($pipes[0], "$password\r"); fwrite($pipes[1], "exit\r"); while(!feof($pipes[1])) { $line = fgets($pipes[1], 1024); $loginFailed = strpos($line, "invalid login name or password"); if ($loginFailed != false) { $failed = true; // echo "FAILED LOGGING"; } // DEBUG OUTPUT echo $line; echo "---<br>"; } fclose($pipes[1]); $return_value = proc_close($process); echo "<br><b>command returned<b> $return_value\n"; } The following will result in empty pipes[1]. I'm unable to get anything out of that pipe as well the fgets just seems to hang. when i try the same code on AIX platform it works. So i'm thinking its a bug... ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=24123&edit=1