一般に、アプリケーションサーバーが稼働していることを確認する簡単な診断方法は、ホストとポートで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
開いているポートを取得するために使用されます。