[解決済み】Linuxでポートが開いているかどうかを効率的にテストする?
2022-04-11 13:35:42
質問
bash スクリプトから、ポートが
445
がサーバー上で開いている/聞いている。
いくつかのオプションを試しましたが、手っ取り早いものが欲しいのです。
1.
lsof -i :445
(数秒かかります)
2.
netstat -an |grep 445 |grep LISTEN
(数秒かかります)
3.
telnet
(返送されません)
4.
nmap
,
netcat
はサーバーで利用できません。
最初に列挙して、その後にgrepするような方法を知っているといいのですが。
どのように解決するのですか?
最近知ったことですが、Bashはネイティブで ファイルディスクリプタとしてのtcp接続 . 使用するには
exec 6<>/dev/tcp/ip.addr.of.server/445
echo -e "GET / HTTP/1.0\n" >&6
cat <&6
0,1,2がstdin,stdout,stderrなので、6をファイルディスクリプタとして使っているんだ。5は、時々 子プロセス用のBash ということで、3,4,6,7,8,9が無難でしょう。
下のコメントのように ローカルサーバ をスクリプトで実行します。
exec 6<>/dev/tcp/127.0.0.1/445 || echo "No one is listening!"
exec 6>&- # close output connection
exec 6<&- # close input connection
誰かがリッスンしているかどうかを判断するために、ループバックで接続を試みます。もし失敗したら、ポートが閉じられているか、アクセスを許可されていないことになる。その後、接続を終了する。
メールの送信、失敗時のスクリプトの終了、必要なサービスの起動など、使用するケースに応じて変更してください。
関連
-
[解決済み] gzip: stdin: not in gzip format tar: 子プロセスがステータス 1 を返しました。エラーは回復不可能:現在終了中
-
[解決済み】WSL - GEDIT サーバーを開始することができません。接続できませんでした。接続が拒否されました[closed]。
-
[解決済み] SIGRTMAXとSIGRTMINの使い方は?
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] Linuxで特定のポートで動作しているプロセスを停止させる方法は?
-
[解決済み] Bashで変数が数値であるかどうかをテストするにはどうすればよいですか?
-
[解決済み】WindowsでTCPまたはUDPポートをリッスンしているプロセスを見つけるにはどうすればよいですか?
-
[解決済み】ポート番号を指定したscp
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 readChar(con, 5L, useBytes = TRUE) のエラー : 接続を開くことができません。
-
[解決済み】makeでビルドした後の.dファイルとは?
-
[解決済み】gcc: エラー: 認識されないコマンドラインオプション
-
[解決済み] bash: cd: そのようなファイルやディレクトリはありません
-
[解決済み] at&tアセンブリの「push」と「pushq」の違いは何ですか?
-
[解決済み] MongoDBへの接続が拒否された errno 111
-
[解決済み] シェルで 'exec ls' を実行すると何が起こるか、またその理由は?[クローズド]。
-
[解決済み] readChar(con, 5L, useBytes = TRUE)でのエラー:接続を開くことができません。
-
[解決済み] sudoとnohupを連動させる
-
[解決済み] Grep ディレクトリ内のすべてのファイルを文字列1および文字列2で検索します。