を実行すると、調整が必要なように見える他のコマンドとは対照的に、netstat
コンソールサイズに関係なくコマンドの出力幅が制限されることがわかりました。ps
たとえば、
$ sudo netstat -natp | grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1454/sshd
tcp 0 48 xx.xx.xx.xx:22 xx.xx.xx.xx:44182 ESTABLISHED 1147/sshd: wtower [
tcp6 0 0 :::22 :::* LISTEN 1454/sshd
2番目の出力の線幅が非常に短いことがわかります(で終わります[
)。正しい出力を得る方法はありますかnetstat
?
修正する:このパッケージバージョンはnet-tools_1.60-24.1ubuntu2_i386
Ubuntu Server 12.04.5 LTSで実行されます。
残念ながら、ファイルにリダイレクトすると同じ出力が生成されます。
出力はすべてのコンソールサイズより高いです。小さいサイズでは各行をラップしますが、まだ出力は同じで短縮された。
答え1
説明したように同様の質問に対する回答aptitude
との場合、dpkg
出力netstat
は切り捨てられます。 grepにパイプするときに出力がどれだけ広くなるべきかわからないからです。この一般的な問題に対する解決策は、特にパイプを入力するプログラムのオプションによって異なります。の場合netstat
、私が見ることができる唯一のオプションは、このオプションを使用することです--wide
。このオプションは、出力が必要なだけ出力が広いと仮定するように指示します。その後、たとえば使用できますcut -c-100
。 1行に100文字だけが必要な場合。
答え2
これでこの問題が解決された可能性があります。どのポートがリッスンしているかを確認しようとしても同じ問題が発生しました。
私は前に走っていたnetstat -vat
。これにより熱が切り捨てられる。最後に大文字の「T」を追加するだけで、私が望む結果を得ることができることがわかりました。
netstat -vatT
v = verbose a = all t = tcp T = notrim (長いアドレスの切り捨てを停止)
答え3
Amazon Linuxはオプションを使用します-W
。たとえば、netstat -atgW
netstat --version
net-tools 2.10-alpha
Fred Baumgarten, Alan Cox, Bernd Eckenfels, Phil Blundell, Tuan Hoang, Brian Micek and others
...
man netstat
--wide, -W 必要に応じて IP アドレスを切り捨てるために出力を使用しないでください。これは、既存のスクリプトが現在中断されるのを防ぐためのオプションです。
答え4
2番目の出力の線幅が非常に短いことがわかります([で終わります)。 netstatから正しい出力を得る方法はありますか?
PID/Program name
残念ながら、netstatの列幅はハードコーディングされています。#define PROGNAME_WIDTH 20
したがって、netstatから直接完全な出力を得ることは不可能です。 19文字で、最後にスペースがあります。
今日のLinuxでは少し異なる形式を使用できますが、フルネームsudo ss -natp
で情報を完成させることができます。
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=1360261,fd=14))
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1360240,fd=3))
LISTEN 0 4096 0.0.0.0:25 0.0.0.0:* users:(("docker-proxy",pid=1388011,fd=4))
ESTAB 0 0 10.0.2.15:22 10.0.2.2:39156 users:(("sshd",pid=1052681,fd=4),("sshd",pid=1052550,fd=4))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1360240,fd=4))
LISTEN 0 4096 [::]:3478 ```