I am trying to create shell script that ssh into a remote server and run a script there and print the output in the local server but when I run the script in the local server it most of the time outputs nothing and rarely outputs data :
Mule: CPU > % RAM > %
and when I ssh in the local server to the remote server in the command line and run the script it outputs normally in the command line :
Mule: CPU > 39.0% RAM > 8.1%
the script in local server
#!/bin/bash echo -e 'r' echo 'leg3' echo -e 'r' ssh -qT appread@${remote} << EOF source /home/appread/Process_mon.sh exit EOF
script in remote server :
#!/bin/bash mulecpu=$(top -b -n 1 -c | grep -P '.*[j]ava.*mule.*'| awk '{print $9}') muleram=$(top -b -n 1 -c | grep -P '.*[j]ava.*mule.*'| awk '{print $10}') m=$(echo 'Mule: CPU > '$mulecpu'% RAM > '$muleram'% ') echo $m
Advertisement
Answer
If you run top
without -w
, its output may be truncated and so your grep
may fail.
Add -w 512
or similar to maximise the width of the output:
#!/bin/bash top -b -n 1 -c -w 512 | awk '/[j]ava.*mule/ { printf "Mule: CPU > %s%% RAM > %s%%n",$9,$10 }'