我正在尝试使用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
如果有人遇到类似问题,请帮助我
解决方案
它应该通过执行以下操作:
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