Telnet script to amplifier


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Telnet script to amplifier
# 8  
Old 05-10-2014
Quote:
Originally Posted by MadeInGermany
Better quote the ? to prevent the shell from attempting a substitution.
Code:
  echo "?p"

Agreed, I'll edit my earlier proposal.
# 9  
Old 05-11-2014
Quote:
Originally Posted by Don Cragun
Assuming that PWR0 means the power is off and PWR1 means the power is on, and assuming that you want to mute if the power is on, I think you want something more like:
Code:
{
        sleep 2
        echo '?p'
        sleep 2
} | telnet 192.168.1.155 | (
        read power
        if [ "$power" = "PWR1" ]
        then {  sleep 2
                echo MZ
                sleep 2
        } | telnet  192.168.1.155
        fi
)

Obviously, this is untested (since I don't have an amp like this). If the amplifier has a command to terminate a command session, (something like exit or quit) you probably also want to add an echo to send that command to the amplifier in both of the above telnet scripts after the 2nd sleep.
Thanks! You are helping me allot!

When I add this code into the command line it gives me this:

Code:
{
>   sleep 2
>   echo mz
>   sleep 2
>   } | telnet 192.168.1.155
Trying 192.168.1.155...
Connected to 192.168.1.155.
Escape character is '^]'.
BridgeCo AG Telnet server
FL022020204D555445204F4646202020
MUT1
Connection closed by foreign host.

This is just fine because it mutes the amp. This also works inside a bash script, making it executable and running it from the commandline.

When I add your script into the commandline it doesn't give me any errors, but it doesnt do anything else. It just goes back to the commandline. Maybe the connection is closed by foreign host maybe the problem. I also tried with or without the "" and this wasn't the solution. What am I doing wrong?

thanks again!

Last edited by drogert; 05-11-2014 at 02:03 PM..
# 10  
Old 05-11-2014
Quote:
Originally Posted by drogert
Thanks! You are helping me allot!

When I add this code into the command line it gives me this:

Code:
{
>   sleep 2
>   echo mz
>   sleep 2
>   } | telnet 192.168.1.155
Trying 192.168.1.155...
Connected to 192.168.1.155.
Escape character is '^]'.
BridgeCo AG Telnet server
FL022020204D555445204F4646202020
MUT1
Connection closed by foreign host.

This is just fine because it mutes the amp. This also works inside a bash script, making it executable and running it from the commandline.

When I add your script into the commandline it doesn't give me any errors, but it doesnt do anything else. It just goes back to the commandline. Maybe the connection is closed by foreign host maybe the problem. I also tried with or without the "" and this wasn't the solution. What am I doing wrong?

thanks again!
You aren't seeing the output from the 1st telnet session because the script is reading it instead of displaying it on the terminal. I was mistakenly expecting to see only PWR0 or PWR1 on the 1st (and only) line of output from telnet. Let's try a slight modification:
Code:
#!/bin/ksh
echo '*** Request amp status...'
{	sleep 2
	echo '?p'
	sleep 2
} | telnet 192.168.1.155 | while read power
do	printf "%s\n" "$power"
	if [ "$power" = "PWR1" ]
	then 	echo '*** Amp power is on; send mute command...'
		{	sleep 2
			echo MZ
			sleep 2
		} | telnet 192.168.1.155
		echo '*** Amp should be muted now.'
	fi
done

This should let us see the output from both telnet sessions (assuming we do get a line from the 1st session that just contains "PWR1").

(I normally use ksh, but this script should also work with bash.)
# 11  
Old 05-13-2014
Quote:
Originally Posted by Don Cragun
You aren't seeing the output from the 1st telnet session because the script is reading it instead of displaying it on the terminal. I was mistakenly expecting to see only PWR0 or PWR1 on the 1st (and only) line of output from telnet. Let's try a slight modification:
Code:
#!/bin/ksh
echo '*** Request amp status...'
{	sleep 2
	echo '?p'
	sleep 2
} | telnet 192.168.1.155 | while read power
do	printf "%s\n" "$power"
	if [ "$power" = "PWR1" ]
	then 	echo '*** Amp power is on; send mute command...'
		{	sleep 2
			echo MZ
			sleep 2
		} | telnet 192.168.1.155
		echo '*** Amp should be muted now.'
	fi
done

This should let us see the output from both telnet sessions (assuming we do get a line from the 1st session that just contains "PWR1").

(I normally use ksh, but this script should also work with bash.)
Sorry I couldn't react earlier! I really like that you are helping me, but I've been busy last night so I couldnt try it any sooner(wife nagging Smilie) .

I've tried you script and adjusted some tiny bits. Strange thing is that the pioneer amp gives a answer on the ?p question with PWR0, instead of 1... which you would expect. Anyway, I've tried your script it gave me this:

Code:
pi@domoticzpi ~ $  .  /home/pi/domoticz/scripts/bash/versterkeruit1.sh
*** Request amp status...
Trying 192.168.1.155...
Connected to 192.168.1.155.
Escape character is '^]'.
BridgeCo AG Telnet server
PWR0
Connection closed by foreign host.

So there is something happing! but I it wont go any further. When I look at the telnet session closely it does not only give me the PWR0 answer sometimes, but sometimes a line with numbers. I guess this happens when something changes inside the amp. some sort of feedback. Then again, the script does not go any further so maybe this is not the problem.

I found a site which describes some kind of scripts which stores the output. I don't know if we can use this?
(im not allowed to post URL yet... so put the www infront
perceptiveautomation.com/userforum/viewtopic.php?f=11&t=6909&sid=0e816ef6a8c75d478492a4576b5c200d&start=15

thanks anyway...
# 12  
Old 05-13-2014
If you show us the data the script is supposed to handle, we can show you how to handle it.

netcat (nc) would be much better than telnet if you can get it... Telnet's not really meant to be automated. netcat, you can instruct to connect, send, wait a second for an answer, then quit without hanging. It prints no fluff.

Code:
$ echo "QUIT" | nc localhost 21 -q 1
220 ProFTPD x.x.x Server (ProFTPD Default Installation) [127.0.0.1]
221 Goodbye.

$

# 13  
Old 05-14-2014
Quote:
Originally Posted by Corona688
If you show us the data the script is supposed to handle, we can show you how to handle it.

netcat (nc) would be much better than telnet if you can get it... Telnet's not really meant to be automated. netcat, you can instruct to connect, send, wait a second for an answer, then quit without hanging. It prints no fluff.

Code:
$ echo "QUIT" | nc localhost 21 -q 1
220 ProFTPD x.x.x Server (ProFTPD Default Installation) [127.0.0.1]
221 Goodbye.

$

Thank you for your help! I guess what I want is the following:
I need to send this command: ?p (which send a power request) and then the amp responds with PWR0 if on. Then, when on, send MZ (which means Mute)

The amp listens to 192.168.1.155 and has portnmbr 8102.

is this enough?
# 14  
Old 05-14-2014
Code:
#!/bin/bash

# Might need \r\n, not sure
T="\n"

amp() {
        printf "%s${T}" "$*" | nc 192.168.1.155 8192 -q 1
}


REPLY=$(amp "?p")

echo "Got reply '$REPLY'"

if [[ "$REPLY" == *PWR0* ]]
then
        echo "got PWR0"
        amp "MZ"
else
        echo "Did not get PWR0"
fi

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Telnet Script

Hello, I wrote a script for doing telnet.However the requirement got changed and now I have to write a telnet script that will 1. Do the telnet from all the virtual ips in a box(Ex: x.x.x.x is the box ip, and x.x.x.1,x.x.x.2 etc are virtual ips associated with that box.) 2. The port range... (3 Replies)
Discussion started by: coolkid
3 Replies

2. Shell Programming and Scripting

Telnet Script

Hello, I wrote a script for doing telnet.However the requirement got changed and now I have to write a telnet script that will 1. Do the telnet from all the virtual ips in a box(Ex: x.x.x.x is the box ip, and x.x.x.1,x.x.x.2 etc are virtual ips associated with that box.) 2. The port range... (0 Replies)
Discussion started by: coolkid
0 Replies

3. Shell Programming and Scripting

telnet script

Hi, I need a script that take one parameter as destination hostname and two parameter as ranges and tries telnet and records the successful connections. fo reg: ./testtelnet.sh destination-host 1000 1050 should give me all the port between 1000 and 1050 what successfully connected to... (10 Replies)
Discussion started by: shifahim
10 Replies

4. Shell Programming and Scripting

Telnet script

Hi all, I would like to write a ad hoc shell script that would allow me to do some telnet tests to multiple IP's and ports at the same time . So, I want to determine which one is successful and which one fails. So, basically I would like the shell to spawn the telnet test and to break out of... (3 Replies)
Discussion started by: Pouchie1
3 Replies

5. Shell Programming and Scripting

telnet script help

Hi Guys, How do I write the script for the following telnet 192.168.1.100 9002 if the result is less than 1 second. The script should say as port open if the result takes more than 3 seconds. The script should display as port closed. Thanks, Charan (1 Reply)
Discussion started by: charan314
1 Replies

6. Shell Programming and Scripting

Using Telnet in a script

Hi All, I was trying to use telnet in a script to access a certain processor on a certain port to view some processes. The problem is that when I use telnet the output is displayed for me. The script is: #!/bin/sh cd /ahmed/ezzat/ rm ss7trace.log touch ss7trace.log chmod 755... (3 Replies)
Discussion started by: Ahmad Ezzat
3 Replies

7. Shell Programming and Scripting

Telnet Script

Hi, I have the following code ... (sleep 1; echo $USERID ; sleep 1; echo $PASSWD ; sleep 1 ; echo y ; sleep 1 ; echo "\r" ; sleep 1 ; echo "cd $FILEPATH" ; sleep 1 ; echo "pwd"; sleep 1 ; echo df -k .| tail -1| cut -d ' ' -f8 > aop.txt ; echo "pwd" ; cat aop.txt; sleep 3)| telnet $SERVER the... (1 Reply)
Discussion started by: King Nothing
1 Replies

8. Shell Programming and Scripting

how to use telnet in script

I am trying to use telnet in shell script but getting following error error Connected to crmapp00.agf.ca. Escape character is '^]'. Connection closed by foreign host. Script #!/bin/ksh PATH=/usr/sbin/:/usr/bin:/usr/ucb:/etc:/usr/local/bin:. telnet HOSTNAME <<SCRIPT user userid... (9 Replies)
Discussion started by: sibghat
9 Replies

9. UNIX for Dummies Questions & Answers

telnet through script

Hi, How to write a script to perform telnet/ftp operation. Also please refer some site to get reference about shell scripting. Thanks in advance -Arun. (1 Reply)
Discussion started by: arun.viswanath
1 Replies

10. IP Networking

telnet in a script

Does anyone have a script that contains the telnet command and passes the login and password in the script as well? (4 Replies)
Discussion started by: vaccari
4 Replies
Login or Register to Ask a Question