我正在尝试使用Spur通过SSH连接到远程服务器。当我给'ps'和'aux'参数时,它运行良好,它工作正常。 当我给'ps','aux','|','grep'和'java'时它会给我一个错误
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'
我的代码如下:
import spur
shell = spur.SshShell(hostname='hostname',
username='uname',
password='password')
with shell:
result = shell.run(['ps', 'aux', '| grep java'])
print result.output
如果有人遇到类似的问题,请帮助我
答案 0 :(得分:1)
它应该通过以下方式起作用:
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
在我的情况下,结果是:
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
答案 1 :(得分:0)
感谢Mostafa的回答。使用Pexpect后,我获得了相同的结果。在这里我的代码。我希望它能帮助其他用户。
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()