Sponsored Content
Full Discussion: SSH batch help
Top Forums UNIX for Dummies Questions & Answers SSH batch help Post 302626423 by royalibrahim on Thursday 19th of April 2012 09:44:27 AM
Old 04-19-2012
Quote:
Originally Posted by neutronscott
sure..
Be aware that using an unquoted heredoc will expand parameters locally. Is why it will expand $server inside single quotes. See difference:

Code:
[mute@geek ~]$ for server in localhost; do
> ssh mute@$server /bin/bash -s <<EOF
> echo 'testing on $server'
> EOF
> done
mute@localhost's password:
testing on localhost
[mute@geek ~]$ for server in localhost; do ssh mute@$server /bin/bash -s <<'EOF'
> echo "testing on $server"
> EOF
> done
mute@localhost's password:
testing on
[mute@geek ~]$

Hi neutronscott, I could not understand the quoting of here-document stuff that you told.

Also, I read the following about here-documents:

All special characters between here-document, such as $, `, *, ... need to be escaped otherwise the code will be evaluated first by the calling shell

\EOF -- this "here-document", escaped version is used to prevent expansion

Escaping or quoting the delimiter for a here-document instructs the shell not to perform parameter expansion, command/variable substitution and arithmetic expansion on the here-document's contents


so my questions are:
a) what is the difference between \EOF and 'EOF'?

b) what do you mean by expanding locally? As per your example, when I issue ssh command it would be logged into the remote machine after successful password entry. So in that case, it is not in local anymore. So it should have printed the server name right, as I have the quoted the here-document parameter (i.e) 'EOF'?

Also, if you see the following code:
Code:
echo $var | ssh user@server "read remote_var; echo \$remote_var"

this will print the variable's value, since it has been escaped. So how it is different from quoting/unquoting of here-doc parameter? Kindly clarify me

Last edited by royalibrahim; 04-19-2012 at 10:49 AM..
 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

SSH Batch configuration

Team, I am trying to do ssh batch as root. I have ssh set-up to do work w/o requiring password/uid on remotes. The problem is I need to submit batch work to remote systems, and NOT have my terminal program.sh lock/wait for the response from remote. This is so I can submit batch work to other... (2 Replies)
Discussion started by: xcom007
2 Replies

2. Shell Programming and Scripting

SSH in batch mode and File-Handles in a loop

Hi all I try to execute SSH commands on several hosts in a while-loop. There seems to be a problem with file-handle, first cycle works correct but no other one will follow due to the while condition is false even that there are many more host entries (lines) in all_hosts.dat. ... (3 Replies)
Discussion started by: DaveCutler
3 Replies

3. UNIX for Dummies Questions & Answers

nicely formatted directory listing from batch ssh session

Hi, I am really struggling to finish of a script I have been assigned. The script's purpose is to log on to each server defined in an array, determine the Web Server version, and list the directory beneath the installation directory. In my case, this installation directory is almost always... (6 Replies)
Discussion started by: grebbux
6 Replies

4. HP-UX

how to run glance over ssh in batch mode

Hello; Is it possible to run glance over ssh in batch mode ?? Similar to running " top -f " command over ssh.. Need to get glance output for specific pids Thnx very much (5 Replies)
Discussion started by: delphys
5 Replies

5. Shell Programming and Scripting

Executing a batch of files within a shell script with option to refire the individual files in batch

Hello everyone. I am new to shell scripting and i am required to create a shell script, the purpose of which i will explain below. I am on a solaris server btw. Before delving into the requirements, i will give youse an overview of what is currently in place and its purpose. ... (2 Replies)
Discussion started by: goddevil
2 Replies

6. Shell Programming and Scripting

Ssh = ssh expect and keep everything not change include parameter postion

I have write a script which contains ssh -p 12345 dcplatform@10.125.42.50 ssh 127.0.0.1 -p 5555 "$CMD" ssh root@$GUEST_IP "$CMD" before I use public key, it works well, now I want to change to "expect", BUT I don't want to change above code and "parameter position" I can post a... (1 Reply)
Discussion started by: yanglei_fage
1 Replies

7. Shell Programming and Scripting

SFTP or scp with password in a batch script without using SSH keys and expect script

Dear All, I have a requirement where I have to SFTP or SCP a file in a batch script. Unfortunately, the destination server setup is such that it doesn't allow for shell command line login. So, I am not able to set up SSH keys. My source server is having issues with Expect. So, unable to use... (5 Replies)
Discussion started by: ss112233
5 Replies

8. UNIX for Beginners Questions & Answers

Ssh script to validate ssh connection to multiple serves with status

Hi, I want to validate ssh connection one after one for multiple servers..... password less keys already setup but now i want to validate if ssh is working fine or not... I have .sh script like below and i have servers.txt contains all the list of servers #/bin/bash for host in $(cat... (3 Replies)
Discussion started by: sreeram4
3 Replies

9. Shell Programming and Scripting

Find active SSH servers w/ ssh keys on LAN

Hi, I am trying to complete my bash script in order to find which SSH servers on LAN are still active with the ssh keys, but i am frozen at this step: #!/bin/bash # LAN SSH KEYS DISCOVERY SCRIPT </etc/passwd \ grep /bin/bash | cut -d: -f6 | sudo xargs -i -- sh -c ' && cat... (11 Replies)
Discussion started by: syrius
11 Replies
GIT-SHELL(1)							    Git Manual							      GIT-SHELL(1)

NAME
       git-shell - Restricted login shell for Git-only SSH access

SYNOPSIS
       chsh -s $(command -v git-shell) <user>
       git clone <user>@localhost:/path/to/repo.git
       ssh <user>@localhost

DESCRIPTION
       This is a login shell for SSH accounts to provide restricted Git access. It permits execution only of server-side Git commands implementing
       the pull/push functionality, plus custom commands present in a subdirectory named git-shell-commands in the user's home directory.

COMMANDS
       git shell accepts the following commands after the -c option:

       git receive-pack <argument>, git upload-pack <argument>, git upload-archive <argument>
	   Call the corresponding server-side command to support the client's git push, git fetch, or git archive --remote request.

       cvs server
	   Imitate a CVS server. See git-cvsserver(1).

       If a ~/git-shell-commands directory is present, git shell will also handle other, custom commands by running "git-shell-commands/<command>
       <arguments>" from the user's home directory.

INTERACTIVE USE
       By default, the commands above can be executed only with the -c option; the shell is not interactive.

       If a ~/git-shell-commands directory is present, git shell can also be run interactively (with no arguments). If a help command is present
       in the git-shell-commands directory, it is run to provide the user with an overview of allowed actions. Then a "git> " prompt is presented
       at which one can enter any of the commands from the git-shell-commands directory, or exit to close the connection.

       Generally this mode is used as an administrative interface to allow users to list repositories they have access to, create, delete, or
       rename repositories, or change repository descriptions and permissions.

       If a no-interactive-login command exists, then it is run and the interactive shell is aborted.

EXAMPLE
       To disable interactive logins, displaying a greeting instead:

	   $ chsh -s /usr/bin/git-shell
	   $ mkdir $HOME/git-shell-commands
	   $ cat >$HOME/git-shell-commands/no-interactive-login <<EOF
	   #!/bin/sh
	   printf '%s
' "Hi $USER! You've successfully authenticated, but I do not"
	   printf '%s
' "provide interactive shell access."
	   exit 128
	   EOF
	   $ chmod +x $HOME/git-shell-commands/no-interactive-login

       To enable git-cvsserver access (which should generally have the no-interactive-login example above as a prerequisite, as creating the
       git-shell-commands directory allows interactive logins):

	   $ cat >$HOME/git-shell-commands/cvs <<EOF
	   if ! test $# = 1 && test "$1" = "server"
	   then
		   echo >&2 "git-cvsserver only handles "server""
		   exit 1
	   fi
	   exec git cvsserver server
	   EOF
	   $ chmod +x $HOME/git-shell-commands/cvs

SEE ALSO
       ssh(1), git-daemon(1), contrib/git-shell-commands/README

GIT
       Part of the git(1) suite

Git 2.17.1							    10/05/2018							      GIT-SHELL(1)
All times are GMT -4. The time now is 10:03 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy