GNU/Linux >> Linux の 問題 >  >> Linux

Linux コマンドは未使用のポートを取得します

netstat -lat リスニングの完全なリストを提供します そして確立 ポート。

ポートがこれらの状態のいずれにもない場合、システムには存在しないため、未使用のポートのリストを表示するコマンドは見つかりません。

65535 個のポートがあることに注意してください。したがって、netstat -lat にないものはすべて は未使用のポートです。

次の bash スクリプトは tcp の単純なスキャンを行います どのポートが開いているかを知らせてくれます 閉じている :

#!/bin/bash
IP=$1
first_port=$2
last_port=$3
function scanner

{
for ((port=$first_port; port<=$last_port; port++))
        do
                (echo >/dev/tcp/$IP/$port)> /dev/null 2>&1 && echo $port open || echo "$port closed"
        done
}

scanner

portscan.sh として保存する場合 ./portscan.sh IP first_port last_port として実行する必要があります。 、例:./portscan 127.0.0.1 20 135 ポート 20 から 135 までのローカル機器をスキャンします


Ruby 2.x (ワンライナー):

ruby -e 'require "socket"; puts Addrinfo.tcp("", 0).bind {|s| s.local_address.ip_port }'

現在、私のマシンでは次のように印刷されています:

42644

印刷された後続の呼び出し:

36168

この手法では、現在のユーザーが未使用のポートを要求し (ポート "0" にバインド)、オペレーティング システムが提供するポート番号を出力します。また、現在のユーザーが要求しているため、1024 未満のポートは返されません (現在のユーザー =root でない限り)。

クレジットが必要な場合のクレジット - このソリューションは、unix.stackexchange.com の未使用のローカル ポートを見つける最も簡単な方法は何ですか?


1025 から 60000 の間の番号をランダムに生成し、その番号が使用ポートのリストに見つからなくなるまでループする短い bash スクリプト。これは、より大きなポートに偏っている簡単で汚いソリューションです:

CHECK="do while"

while [[ ! -z $CHECK ]]; do
    PORT=$(( ( RANDOM % 60000 )  + 1025 ))
    CHECK=$(sudo netstat -ap | grep $PORT)
done

echo $PORT

Linux
  1. Linuxmvコマンド

  2. Linuxduコマンド

  3. Linux で未使用の SATA ポートを一覧表示する

  1. Linuxipコマンド

  2. Linuxcdコマンド

  3. Linuxでのポートの使用を確認する

  1. Linux コマンドのソース コードを入手する

  2. Linux コマンドは名前で tomcat プロセス ID を取得します

  3. Linux で開いているポートのリストを取得する