Net::Telnet with no prompt
Hi,
I am writing a Perl script which connects to a socket and sends some standard AT command. I created the script first using Socket::INET but soon realised that the socket wasnt a raw data socket but actually ran Telnet. I therefore started using Net::Telnet but I am having some problems here. I think the problem is because the telnet session does not give me a prompt so Net::Telnet times out. I tried changing the Prompt option to /^$/, //, "", and anything I can think of but I still cant get it to work. Can someone provide me with a sample of how to get Net::Telnet to work without needing a prompt, just do it on a per line basis? This is what a normal connection would look like. Send: AT\n Receive: OK\n Send: AT+CGDCONT="IP","internet"\n Receive: OK\n Nothing complicated, just send one line, receive one, send another, receive another etc. I think I need to set cmd_remove_mode to 1 as well as the device echoes back everything I send it. In worst case I will have to go back to Socket::INET but I would perfer not to as I then have to ignore garbage I get back and ignore every second response which is my own echo etc. Thanks in advance! / Fredrik |
Code:
#!/usr/bin/perl |
1. tell us exactly what the fail symptoms are. Show example.
2. use warnings and strict |
1. The symptoms are as follows, if I use the above code, then $line will be empty if I dont use the debugger (-d). If I do and step through the same code $line contains OK and the if statement matches and I get "Line: OK" printed to the screen.
Any other of the ~10 examples of Net::Telnet I have found on google gives me a "command timed-out at line X". The one I posted above I set errmode to return so that it would not die when it fails but then I get the symptoms I described above. 2. I tried adding warnings as you suggested and I then get these errors, Use of uninitialized value in pattern match (m//) at ./fb4 line 16. Use of uninitialized value in pattern match (m//) at ./fb4 line 17. Adding strict and declaring my variables still gives same result. Thanks! |
According to this: http://search.cpan.org/~jrogers/Net-.../Net/Telnet.pm you should prob be using cmd() instead of print(). Also, looks like you're 'suffering from buffering', see this
Quote:
|
All times are GMT -5. The time now is 11:52 PM. |