Sponsored Content
Top Forums Shell Programming and Scripting SSH sessions from bash script Post 302307130 by qneill on Tuesday 14th of April 2009 04:40:39 PM
Old 04-14-2009
No reason you have to use a "here script" with <<EOF, you can pipe commands directly to the standard input of ssh, for example using echo:

Code:
$ D=/tmp; F1=x1; echo "F2=$D/$F1
echo on \$(hostname): escaped: D=\$D F1=\$F1 F2=\$F2
echo on \$(hostname): not escaped: D=$D F1=$F1 F2=$F2
df $D >\$F2; ls -l \$F2; cat \$F2; rm -rf \$F2; ls -l \$F2
" | ssh qneill@qneill-linux

this shows a couple of local variables D and F1 (expanded locally when the local echo is executed), and a remote variable F2 (expands to nothing locally, but remotely expands to the assigned value). The commands produce this output:

Code:
on qneill-linux: escaped: D= F1= F2=/tmp/x1
on qneill-linux: not escaped: D=/tmp F1=x1 F2=
-rw-r--r-- 1 qneill 30101 125 2009-04-14 15:25 /tmp/x1
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda1            147581948  78980980  61104240  57% /
ls: /tmp/x1: No such file or directory

The commands shown use the local variable D and remote variable F2, creating, using, and removing a file (/tmp/x1 on the remote machine).

If all of your variable expansions are constant, or only depend on remote things, you can use single quotes and avoid having to escape all the $ signs:

Code:
echo 'D=/tmp; F1=x1; F2=$D/$F1
echo on $(hostname): D=$D F1=$F1 F2=$F2
df $D >$F2; ls -l $F2; cat $F2; rm -rf $F2; ls -l $F2
' | ssh qneill@qneill-linux

which yields
Code:
on qneill-linux: D=/tmp F1=x1 F2=/tmp/x1
-rw-r--r-- 1 qneill 30101 125 2009-04-14 15:34 /tmp/x1
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda1            147581948  78980960  61104260  57% /
ls: /tmp/x1: No such file or directory

Once you start using this mechanism for anything complicated, you will quickly run into many quoting issues. Consider writing a script that generates code on the remote system, or a templated script that can be parameterized locally or remotely as needed, then executed remotely with a single call to ssh.
--
qneill
 

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
ERR_GET_LIB(3)							      OpenSSL							    ERR_GET_LIB(3)

NAME
ERR_GET_LIB, ERR_GET_FUNC, ERR_GET_REASON - get library, function and reason code SYNOPSIS
#include <openssl/err.h> int ERR_GET_LIB(unsigned long e); int ERR_GET_FUNC(unsigned long e); int ERR_GET_REASON(unsigned long e); DESCRIPTION
The error code returned by ERR_get_error() consists of a library number, function code and reason code. ERR_GET_LIB(), ERR_GET_FUNC() and ERR_GET_REASON() can be used to extract these. The library number and function code describe where the error occurred, the reason code is the information about what went wrong. Each sub-library of OpenSSL has a unique library number; function and reason codes are unique within each sub-library. Note that different libraries may use the same value to signal different functions and reasons. ERR_R_... reason codes such as ERR_R_MALLOC_FAILURE are globally unique. However, when checking for sub-library specific reason codes, be sure to also compare the library number. ERR_GET_LIB(), ERR_GET_FUNC() and ERR_GET_REASON() are macros. RETURN VALUES
The library number, function code and reason code respectively. SEE ALSO
err(3), ERR_get_error(3) HISTORY
ERR_GET_LIB(), ERR_GET_FUNC() and ERR_GET_REASON() are available in all versions of SSLeay and OpenSSL. 1.0.1e 2013-02-11 ERR_GET_LIB(3)
All times are GMT -4. The time now is 07:18 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy