サーバーがTelnetなしでCLIでリッスンしていることを確認してください。

サーバーがTelnetなしでCLIでリッスンしていることを確認してください。

一般に、アプリケーションサーバーが稼働していることを確認する簡単な診断方法は、ホストとポートでTelnetを再実行することです。

telnet somehost port

問題は、macOSなどの一部のオペレーティングシステムでは、デフォルトでこのツールを使用できないことです。それで、Telnetをインストールする方法を学ぶのではなく、特別な権限を必要とせずにサーバーがリッスンしていることを確認するための別のCLI方法があるかどうか疑問に思います。

明確にするために、私はすべてのシステムでTelnetと同じくらい速く動作し、わずか5秒かかるソリューションを探しています。ソリューションを作成しても、実際に高速アクセス方法が提供されるわけではありません。

ベストアンサー1

特定のポートで何かがリッスンしているかどうかを確認する方法はいくつかあります。

そしてwget/curl

wget your_IP:port

そしてnetstat

netstat -an|grep LISTEN|grep :port

そしてlsof

lsof -i :port

そしてnetcat

nc -vz your_IP port

/procファイルシステムの使用(Linuxでのみ動作可能)(ここで説明されています)

そしてss

ss|grep LISTEN|grep :port

そしてnmap

nmap -sS -O -pport your_IP

編集1また、(ほぼ)すべてのssh、http、ftpクライアントが動作しますが、時にはポートがファイアウォールによって閉じられているか利用できないかを理解することは困難です。
編集2発見中このQ&Aタスクを使用しcatて完了するecho方法の例:

true &>/dev/null </dev/tcp/127.0.0.1/$PORT && echo open || echo closed

または、exec次のコマンドを使用します(エラーポートが開いていない場合)。

exec 6<>/dev/tcp/your_IP/port

私はawk仕事をする方法を見つけました(オリジナルここ):

awk -v port=your_port 'function hextodec(str,ret,n,i,k,c){
    ret = 0
    n = length(str)
    for (i = 1; i <= n; i++) {
        c = tolower(substr(str, i, 1))
        k = index("123456789abcdef", c)
        ret = ret * 16 + k
    }
    return ret
}
function getIP(str,ret){
    ret=hextodec(substr(str,index(str,":")-2,2)); 
    for (i=5; i>0; i-=2) {
        ret = ret"."hextodec(substr(str,i,2))
    }
    ret = ret":"hextodec(substr(str,index(str,":")+1,4))
    return ret
} 
NR > 1 {{local=getIP($2);remote=getIP($3) }{ if (remote ~ "0:0" && local ~ ":"port) print local}}' /proc/net/tcp 

編集3コメントで述べたように、いくつかのアプローチ、特に/devファイルシステムベースのアプローチはあなたの環境で機能するかもしれません。

編集4私が見つけたSolarisの場合優れたQ&Apfiles開いているポートを取得するために使用されます。

おすすめ記事