アプリケーションで使用するためのすべての空きオープンポートを一覧表示するためのLinuxコマンドが必要です。
lsof -i TCP| fgrep LISTEN
それがリストしているPortsが必ずしも自由に使えるわけではないので助けになっているとは思われません。未使用の空きオープンポートを一覧表示するにはどうすればいいですか?
netstat -lntu
@askmishが返信したところでは、あなたのシステム上でTCPポートとUDPポート上で実行されているサービスのリストが表示されます。
-l
=何らかのポートでlistenしているサービスのみ-n
=ポート番号を表示します。サービス名を解決しないでください-t
= TCPポート-u
= udp ports-p
=プログラムの名前どのポートが空いていて、どのプログラムが動いているのではないかを知りたいだけなので、 'p'パラメータは必要ありません。
ただし、これはシステムのどのポートが使用されているかを示すだけです。これはあなたのネットワークの状態をあなたに知らせるものではありません。 NATの背後にいて、一部のサービスに外部からアクセスできるようにしたい場合。またはファイアウォールが外部の訪問者のためにポートをブロックしている場合。その場合は、nmapが役に立ちます。警告:nmapは自分の管理下にあるネットワーク上でのみ使用してください。また、nmapのpingをブロックすることができるファイアウォールのルールがあります、あなたは正しい結果を得るためにオプションをいじる必要があります。
net-tools
は非推奨 なので、ss
の代わりに netstat
コマンド を使用できます。 netstat
があなたのマシンに存在しない場合:
ss -lntu
同様に動作するはずです
netstat -lntu
内蔵のヘルプによると:
-n, --numeric don't resolve service names
-l, --listening display listening sockets
-t, --tcp display only TCP sockets
-u, --udp display only UDP sockets
このコマンドは、開いているネットワークポートとそれらを所有しているプロセスを一覧表示します。
netstat -lnptu
その後、結果をあなたの正確なスペックに絞り込むことができます。
ポートに関するよりきめ細かい結果を得るためにnmap
を使うこともできます。
応答トラフィックを含むすべてのオープンポート
netstat -tuwanp 2>/dev/null | awk '{print $4}' | sort | uniq -c | wc -l
私が最初に疑問に思っていたのは、彼が現在サービスに接続されているポートではなく、未使用のポートについて尋ねていたということでした。この場合、使用されているポートを一覧表示し、他のポートが未使用であると想定する以外に、それらを一覧表示する具体的な方法はありません。
もう1つ留意すべき点は、ユーザーとして1024未満のポートを開くことはできないということです(そのためにはroot権限が必要です)。
やってみる
Sudo netstat -plnt | grep -E '(0.0.0.0:|:::|127.0.0.1:|::1:)' | awk 'NR>2{print $7}' | sort -n | uniq
そしてこれを見てください。
次のコマンドは、Ubuntu/Debianと同じフォーマットで出力されるUNIXで動作します。ローカルアドレスは4桁目にあり、出力の先頭には2行のヘッダーがあります。どちらかの番号が違う場合は、下記のawkコマンドを微調整してください。
IPv4のみが必要な場合:
netstat -lnt | awk 'NR>2{print $4}' | grep -E '0.0.0.0:' | sed 's/.*://' | sort -n | uniq
IPv6のみが必要な場合
netstat -lnt | awk 'NR>2{print $4}' | grep -E ':::' | sed 's/.*://' | sort -n | uniq
両方を一緒にしたい場合:
netstat -lnt | awk 'NR>2{print $4}' | grep -E '(0.0.0.0:|:::)' | sed 's/.*://' | sort -n | uniq
このコマンドは、すべてのインターフェースでlistenしているポート番号のリストを出力します。 localhostインターフェースでlistenしているすべてのポートをリストしたい場合は、次のようにしてください。
netstat -lnt | awk 'NR>2{print $4}' | grep -E '(127.0.0.1:|::1:)' | sed 's/.*://' | sort -n | uniq