Linux 上の LAN 内のすべてのホスト名 (コンピュータ名) をすばやく一覧表示するスクリプト

Linux 上の LAN 内のすべてのホスト名 (コンピュータ名) をすばやく一覧表示するスクリプト

最近、LAN 内のすべてのホスト名を一覧表示する必要があります (SMB プロトコル)。しかし、findsmb コマンドでは常にすべてのホスト名を一覧表示できません。インターネットで検索しましたが、既成のソリューションがなかったので、Python スクリプトを作成しました。

このスクリプトは、LAN ARP テーブル内のすべての IP をスキャンし、ホスト名を解決しようとします。これにより、関連情報をより詳細にリストできます。

このスクリプトを実行するには、samba-common-bin および arp-scan パッケージが必要であることに注意してください。これらがない場合は、まず apt でインストールしてください。

使用方法: 直接実行するか、python3 を使用して、スキャンするネットワーク インターフェイスの名前を入力します (わからない場合は、ifconfig を実行して確認します。通常は、コマンド出力の左端の列に表示される ens33、eth0 などです)。次に、Enter キーを押して待機します。実行には数分かかる場合があります。

実行するにはルート権限が必要です。 !

#!/usr/bin/env python3

インポートOS

def shellrun(cmd):
    a = os.popen(cmd)
    b = a.read()
    c = b.split('\n')
    リターンc

def cutarpresult(lst):
    a = []
    b = []
    lst[2:]の行について:
        行が != '' の場合:
            a.append(行)
        それ以外:
            壊す
    a の行の場合:
        b.append(行を分割('\t')[0])
    bを返す

defコマンドメーカー(ip):
    'nmblookup -A ' + ip を返す

def getrst(iplist):
    最初 = []
    iplist 内の ip の場合:
        rst.append(shellrun(commandmaker(ip)))
    戻る

定義 washrst(rst):
    rtn = []
    最初の行の場合:
        行[1].split(' ')[1] != 'reply'の場合:
            rtn.append(行[:-1])
    戻る

main() を定義します:
    interface = input('どのインターフェースを使用するか: ')
    iplist = cutarpresult(shellrun('arp-scan -I ' + インターフェース + ' -l'))
    washrst(getrst(iplist)) の rs の場合:
        rsの行の場合:
            印刷(行)

__name__ == '__main__' の場合:
    主要()

Linux で LAN 内のすべてのホスト名 (コンピュータ名) をすばやく一覧表示するスクリプトに関するこの記事はこれで終わりです。Linux で LAN 内のすべてのホスト名を一覧表示する方法についての詳細は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • PythonソケットはLAN内のWindowsとLinux間のメッセージ転送を実現します
  • VMware での Linux システム LAN とエクストラネット アクセスの構成に関するグラフィック チュートリアル
  • ユニークなアプローチ: Linux での LAN へのリモート アクセス
  • Linuxでホスト名を変更する方法
  • Linux でネットワーク カード名とホスト名を変更する方法
  • Python は Windows または Linux ホスト名の一般的な関数共有を取得します
  • Linuxホスト名を変更する方法

<<:  JavaScript ドラッグタイム ドラッグケースの詳細な説明

>>:  JavaScript でウェブ プレーヤーを実装する

推薦する

CSS シャドウ効果の比較: ドロップシャドウとボックスシャドウ

Drop-shadow と box-shadow はどちらも影効果(ハロー効果)のための CSS プ...

JPG、GIF、PNGなどのさまざまな画像形式の詳細な説明

ウェブページ上の画像が一般的に jpg、gif、png 形式であることは誰もが知っています。それらの...

Docker ベースの Redis クラスターの構築方法

Redisイメージをダウンロードする docker pull yyyyttttwww/redis を...

docker-compose でデプロイしたときに MySQL にアクセスできなくなる問題の簡単な分析

Docker-ComposeとはCompose プロジェクトは、以前の fig プロジェクトから派生...

JavaScriptでシンプルなスクロールウィンドウを実装する

この記事では、スクロールウィンドウを実装するためのJavaScriptの具体的なコードを参考までに紹...

JavaScript スネーク実装コード

この記事の例では、参考までに貪欲なスネークを実装するためのJavaScriptの具体的なコードを共有...

CSS テキスト配置実装コード

フォームを作成するときに、名前、携帯電話番号、出生地などの 2 つのフィールドを揃える状況に遭遇する...

ReactでCSSをエレガントに書く方法

目次1. インラインスタイル2. インポート方法を使用する3.cssモジュールのエクスポート4. ス...

MySQL で重複を削除するには、distinct または group by を使用する必要がありますか?

序文group by と distinctive のパフォーマンス比較について: インターネット上の...

JavaScript イベント委任の原則

目次1. イベント委任とは何ですか? 2. イベント委任の原則3. イベント委託の役割1. イベント...

vue3 タイムスタンプ変換 (フィルターを使用せずに)

vue2 では、タイムスタンプを変換するときに、通常はフィルターを使用します。vue3 以降では、...

MySQLインデックスに関する詳細を共有する

数日前、同僚からMySQLのインデックスについて質問を受けました。大体わかっているのですが、まだ練習...

一目でわかる$nextTickの説明

目次1. 機能説明2. 親コンポーネント3. サブコンポーネント NextTick.vue 4なぜ未...

Win10 64ビットMySQL8.0のダウンロードとインストールのチュートリアル図

公式サイトから MySQL をダウンロードしてインストールし、クライアントにログインするにはどうすれ...

Tencent Cloud Server での Jenkins の設定方法の詳細

目次1. Tencent Cloud Serverに接続する2. 環境整備Jenkinsのデプロイメ...