Sponsored Content
Top Forums Shell Programming and Scripting SSH sessions from bash script Post 302265164 by tsurko on Friday 5th of December 2008 06:59:46 PM
Old 12-05-2008
SSH sessions from bash script

Hello,
I had to make an ssh connection to remote server from a bash shell script. I've summarized my research and I want to share it with you. I hope it will be useful to somebody or it will get improved.
Bash has an option, which is called "input redirection", I think. It is something similar to this:

Code:
#!/bin/sh

mysql -u tsurko -p mydb <<EOF
SELECT * FROM test_table;
SELECT * FROM other_table;
quit
EOF
exit

This script will connect to MySQL, will run the two queries and will quit. In similar way we can make an ssh connection in bash script. Here is some example code:
Code:
#!/bin/sh

ssh example.com <<EOF
touch test_file
exit
EOF
exit

This way you can execute anything you want on the remote server. I have the following errors, while running the script:
Code:
Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.

As far as I know this is known issue and it has been discussed in the forum. I haven't tried to fix it - it works for me.
Here is an example, using shell variables in the script:
Code:
#!/bin/sh

TEST_VAR=sample_file

ssh example.com <<EOF
touch $TEST_VAR
exit
EOF

echo "I'm back"
exit

In this case the value of variable TEST_VAR is acquired from the local environment. Ny local I mean the environment, where the script is executed. So on the remote machine we have executed the command "touch sample_file".
Here is another example showing how to use environment variables, declared on the remote server:
Code:
#!/bin/sh

TEST_VAR=sample_file

ssh example.com <<EOF
touch \$TEST_VAR
exit
EOF

echo "I'm back"
exit

Let's assume that we have TEST_VAR set on the remote server. We have escaped the $ character in our script, so $TEST_VAR is treated as string, not as a variable. On the remote server we have executed "touch $TEST_VAR". and TEST_VAR's value is acquired from there.
And finally let's assume that we have to run some commands on two or more machines. It's very inconvenient to have them two or more times (for each session). In this case the following workaround can be used. A text file is created and the desired commands are saved there. Then we can use "`cat <filename>`" in the script and they will be executed on the server. :
Code:
#!/bin/sh

ssh example.com <<EOF
`cat test.cmd`
exit
EOF

ssh example2.com <<EOF
`cat test.cmd`
exit
EOF

exit

and more convenient solution (thanks to ddreggors):
Code:
#!/bin/sh

ssh example1.com `cat test.cmd`
ssh example2.com `cat test.cmd`

Don't forget that the file must contain only commands, written in the way we want them executed on the server. The file can't be a bash script - any variables and so on won't be parsed.
That's it. I'll be glad to hear any suggestions, corrections, critics or just opinions. Corrections about my English are also welcome - it's not my mother tongue.

Last edited by tsurko; 12-07-2008 at 01:06 PM..
This User Gave Thanks to tsurko For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

bash script for ssh login-

hi. I need a bash script which can login to an other mashin via SSH and then run some commands and then return the result to my mashine. I dont know where to begin, I think first I will need a ssh connection, dont know how to make it, then , do I need a ftp connection between the 2 mashins to... (5 Replies)
Discussion started by: big_pil
5 Replies

2. Shell Programming and Scripting

bash ssh login script

hello anyone have done ssh login script without "expect" (automatic login from host A / user b to Host B / user b without enter any passwords)? cheers (2 Replies)
Discussion started by: modcan
2 Replies

3. UNIX for Advanced & Expert Users

How to monitor SSH sessions

Hi All Is it possible to log and monitor user activities in a SSH session. Is there any configuration or a patch to apply ?. Im currently using OpenSSH with AIX 5.3L and my syslog.conf includes auth.* /var/log/sshd/auth.log and in sshd_config it shows SysLogFacility AUTH... (4 Replies)
Discussion started by: Anuradhai4i
4 Replies

4. Shell Programming and Scripting

SSH sessions from bash script

Hi Forum. First of all thanks for reading. I need some help here. I have been checking some other posts about this issue, but I still have problems... I'm trying to conect througn ssh to several machines to kill some process and I have problems with the " ' ' ". This is what I'm trying... (2 Replies)
Discussion started by: gtangil
2 Replies

5. UNIX for Dummies Questions & Answers

Automatic logging (capture screen output) of telnet/ssh sessions on a Solaris node

Hi I am working in Solaris 10 and I want to monitor logs for every telnet/ssh session that tries to connect to the server. I need these logs to be generated in a file that I can fetch using ftp. I am a new user and a stepwise detail will be great BR saGGee (3 Replies)
Discussion started by: saggee
3 Replies

6. Shell Programming and Scripting

ssh to run bash script

I want to use ssh to start a bash script that I have uploaded to a webhost. How do I do that from linux? (2 Replies)
Discussion started by: locoroco
2 Replies

7. Shell Programming and Scripting

Help on an ssh bash script...

Hey Guys, I want to have a bash script on my computer (Mac OS X 10.6.8) that can ssh into my iPod and respring. I know how do this by typing in "ssh root@10.0.1.10" and then typing in the password "alpine". From there i simply type "respring". I want to possibly put this into a shell script so it... (0 Replies)
Discussion started by: jetstream131
0 Replies

8. Shell Programming and Scripting

[Solved] Using SSH in bash script

Hello, I am writing a script that has to log in to X number of servers over a full C class range. I am only keyed on a certain number of these servers and this can change from time to time. The part of my script that deals with this is for i in $(cat $server_list); do ssh ... (0 Replies)
Discussion started by: colinireland
0 Replies

9. Red Hat

multiple ssh sessions

Hi, I use OpenSSH to log on to a RH server but when I enter the password 2 session windows appear. I only need one so can anyone advise where I can rectify this? R, D. (2 Replies)
Discussion started by: Duffs22
2 Replies

10. UNIX for Beginners Questions & Answers

Find number of ACTIVE SSH putty sessions, excluding where the user hopped on to a diff server

Hi - If iam logged on to server A, on 4 putty windows using SSH ... and out of these 4 logged-in sessions, in one of the sessions if i did SSH from server A to server B; i would now have 4 putty windows sessions ... of which 3 are actively logged on to Server A while 1 putty window is actively... (2 Replies)
Discussion started by: i4ismail
2 Replies
All times are GMT -4. The time now is 01:07 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy