0

I am trying to use Spur to connect to remote server via SSH. It works well when I give 'ps' and 'aux' argument, it works fine. When I give 'ps', 'aux', '|', 'grep' and 'java' it gives me an error

spur.results.RunProcessError: return code: 1
output: b''
stderr output: b'ERROR: Garbage option.\n********* simple selection *********  ********* selection by list *********\n-A all processes                      -C by command name\n-N negate selection                   -G by real group ID (supports names)\n-a all w/ tty except session leaders  -U by real user ID (supports names)\n-d all except session leaders         -g by session OR by effective group name\n-e all processes                      -p by process ID\nT  all processes on this terminal     -s processes in the sessions given\na  all w/ tty, including other users  -t by tty\ng  OBSOLETE -- DO NOT USE             -u by effective user ID (supports names)\nr  only running processes             U  processes for specified users\nx  processes w/o controlling ttys     t  by tty\n*********** output format **********  *********** long options ***********\n-o,o user-defined  -f full            --Group --User --pid --cols --ppid\n-j,j job control   s  signal          --group --user --sid --rows --info\n-O,O preloaded -o  v  virtual memory  --cumulative --format --deselect\n-l,l long          u  user-oriented   --sort --tty --forest --version\n-F   extra full    X  registers       --heading --no-heading --context\n                    ********* misc options *********\n-V,V  show version      L  list format codes  f  ASCII art forest\n-m,m,-L,-T,H  threads   S  children in sum    -y change -l format\n-M,Z  security data     c  true command name  -c scheduling class\n-w,w  wide output       n  numeric WCHAN,UID  -H process hierarchy\n'

My code is as following :

import spur

shell = spur.SshShell(hostname='hostname',
                      username='uname',
                      password='password')

with shell:
    result = shell.run(['ps', 'aux', '| grep java'])
print result.output

Please help me if anyone has faced similar issue

2 Answers 2

1

It should work by doing the following:

import spur

shell = spur.SshShell(hostname='host',
                      username='user',
                      password='password')

with shell:
    result = shell.run(['sh','-c','ps aux | grep java'])
print result.output

In my case the result was:

user  5090  0.0  0.0   9632  2472 ?        Ss   04:06   0:00 sh -c ps aux | grep java
user  5093  0.0  0.0   9116   904 ?        S    04:06   0:00 grep java
Sign up to request clarification or add additional context in comments.

Comments

0

Thanks Mostafa for the answer. I achieved the same result after using Pexpect. Here my code. I hope it helps other users.

def connect():
    s = pxssh.pxssh()
    hostname = 'host'
    username = 'name'
    password = 'password'

    if not s.login(hostname, username, password):
        print 'SSH login failed'
        print str(s)
    else:
        print 'SSH ok'
        s.sendline(' ps -eo pid,cmd,etime | grep java')
        s.prompt()
        arr = s.before.split('\n')
        arr_1 = arr[1].split(' ')
        print 'Uptime for the following process is ', arr_1[-1]
        s.logout()

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.