paramiko を使用して、コンピューティングで使用されているすべての TCP ポートを一覧表示しようとしています。ここで良いbashコマンドを見つけました:
netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq
このコマンドは、パテに直接入力すると完全に機能します。ただし、paramiko で使用すると、出力が表示されません。
サンプルコードは次のとおりです。
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username='demo', password='password')
command = "netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq"
stdin, stdout, stderr = ssh.exec_command(command)
print stdout.read()
コマンドを次のように変更すると、標準出力に結果が表示されますが、これは私が望むものではありません。これはおそらく paramiko の正規表現の問題だと思います。何か案が?
command = "netstat -ant | sed -e '/^tcp/ !d'"