Hello,
I am trying to find a way to send several sequential commands via SSH to a remote box in a single command.
Thoughts so far:
1) Can I put them into a function and call the function within the ssh command?
e.g.
No - then it calls the function in the shell on the target and does not recognised it.
2) Can I use a command block?
e.g.
Hmmm - maybe, but I get these messages:
Actually then is does run the commands BUT I'm not sure it's solid.
my final target is that I want to run this whole command in the background --- when I try and do this with nohup I still see these errors
E.g.
3) Create a shell script on the target and call that...
this option does work but I really want to find a way to centralise this script so that I don't have to stick the second script on every server I want to connect to.
I think it's quite an interesting one - can anyone advise on the best possible method for generating a set of commands to execute on a remote box via ssh; but with one SSH command?
NB It cannot be several SSH commands as I need this to both be run in the background and also for the commands to be sequential.
Thanks in advance!
Jamie Neilan
Last edited by Corona688; 04-26-2012 at 05:12 PM..
To keep the forums high quality for all users, please take the time to format your posts correctly.
First of all, use Code Tags when you post any code or data samples so others can easily read your code. You can easily do this by highlighting your code and then clicking on the # in the editing menu. (You can also type code tags [code] and [/code] by hand.)
Second, avoid adding color or different fonts and font size to your posts. Selective use of color to highlight a single word or phrase can be useful at times, but using color, in general, makes the forums harder to read, especially bright colors like red.
Third, be careful when you cut-and-paste, edit any odd characters and make sure all links are working property.
Hello,
I am trying to find a way to send several sequential commands via SSH to a remote box in a single command.
Thoughts so far:
1) Can I put them into a function and call the function within the ssh command?
e.g.
That would call the function locally, and feed its output into ssh.
Still, you cannot, since functions aren't exported across ssh calls. It's like running a fresh script. It knows nothing about your functions or environment...
Quote:
2) Can I use a command block?
Yes. You won't be able to use standard input for anything else, though.
Quote:
I get these messages:
It means what it says. stdin is not a terminal, it's a here-document, so it doesn't allocate a pseudo-tty.
Other than that, there's nothing wrong with it.
Quote:
Actually then is does run the commands BUT I'm not sure it's solid.
Nothing's actually going wrong. The shell's just complaining since its input isn't an interactive terminal.
Quote:
my final target is that I want to run this whole command in the background --- when I try and do this with nohup I still see these errors
E.g.
They're not errors, they're warnings.
I think you can avoid the warnings by running the shell in a manner so it doesn't expect stdin to be a terminal.
Quote:
I think it's quite an interesting one - can anyone advise on the best possible method for generating a set of commands to execute on a remote box via ssh; but with one SSH command?
If you want the deluxe version, the one I tend to use:
Running sh in this way should be quite safe, and using <<"EOF" makes sure nothing gets substituted into the here document, no substitution at all. The only way you can transfer in variables is with the "arg1" "arg2" "arg3" there, which become $1 $2 $3 ...
A quick, and wonderful response - thank you - one more thing though. How would you run your final version there in the background (so if it's in a script that script can continue on while that code runs?)
Perhaps like this?
Not sure if I really need the nohup and the ampersand ...... have tried the ssh -f option to fork to background but doesn't seem to like that..
---------- Post updated at 21:54 ---------- Previous update was at 21:45 ----------
In Fact I think I have it! Returning to my post syntax updating with your input I have running - awesome!
Works a treat! No output to my STOUD/screen (thanks to -q option on ssh) and the log is generated locally from commands passed to the remote box using an code block - absolute genuis - many thanks Corona688. I am indebted to you.
---------- Post updated 27-04-12 at 10:19 ---------- Previous update was 26-04-12 at 21:54 ----------
*UPDATE*
I have found now that while this works for simple commands I include a FOR loop within the EOF code-block and it errors as follows (below) - any ideas??
Error is : ---------- Post updated at 10:32 ---------- Previous update was at 10:19 ----------
Ah-ha! You can use $() to execute code in a here document. OK so here is ht working fix to that:
I am trying to run a command. This is one of my attempts:
for i in fileservera; do ssh -t $i 'sudo ls /';doneThis works, and I see the directories. However, what I want to do now is start a process on the remote server such as /usr/bin/connectproc -standalonesudo /usr/bin/connectproc... (1 Reply)
I have a question.
I will be running a background process using nohup and & command at end. I want to send output to a file say myprocess.out.
So will this command work?
nohup myprocess.ksh > myprocess.out &
Thanks in advance guys !!!
:) (3 Replies)
Hi All,
Can someone help me in knowing the exact difference between nohup and &.
The definition is quite clear but i only want to know if i run my job using & and in between i hung up my terminal. (10 Replies)
I have a fairly simple script like so:
nohup java -jar program.jar >> log 2>&1 &
echo $! > pidfile
This works great when using ssh server "script.sh" but not when using ssh -t server "script.sh"
The solution I came up with was to call sleep after recording the child pid. My guess at the... (2 Replies)
when i have a function definition and function call in my script , i am unable to run my script in background with nohup..
Help me out please..... (3 Replies)
I have a script I'm creating to spawn netcat listeners on a remote server for copying files at high speeds. The issue I'm running into is that after running the "nohup nc -l -p 12345 | tar -xvf - &" commands I can't get the remote shell to terminate. I'm not sure if this is working as intended or... (2 Replies)