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 でウェブ プレーヤーを実装する

推薦する

MySQLカスケードレプリケーションの実装方法の例

いわゆるカスケード レプリケーションでは、マスター サーバーが 1 つのスレーブ サーバーにのみデー...

CSS で透明なグラデーション効果を実装するためのサンプルコード

Zhihu Discovery コラムのタイトル画像は、通常、以下のように表示されます。明らかに、グ...

HTML/CSS の基礎 - HTML コード記述におけるいくつかの注意事項 (必読)

この記事の警告事項は、ブラウザの互換性とはまったく関係ありません。主に、プロジェクトで遭遇したいくつ...

Ubuntu でディスク容量不足により MySQL が起動しない場合の解決策

序文最近、データベースのテーブルに 2 つのフィールドを追加しました。その後、ディスク容量不足のよう...

Docker Desktop で rocketmq をインストールするための非常に詳細なチュートリアル

Dockerデスクトップをインストールするダウンロード先: Docker Desktop for M...

新しい CSS display:box プロパティの詳細な説明

1. ディスプレイボックス;要素にこのプロパティを設定すると、display:inline-bloc...

Vueはデータを初期状態にリセットします

場合によっては、データ内のデータを再利用する必要がありますが、データ内のデータはさまざまなフォーム、...

WebページでjQueryを参照する方法

CDN(コンテンツ配信ネットワーク)を通じて参照できます。 jQuery は Google と Mi...

NodeJSのモジュール性に関する詳細な説明

目次1. はじめに2. 本文2.1 モジュールとは何ですか? 2.2 解決2.3、require.r...

MySQLクライアント認証後の接続失敗の問題に対する完璧なソリューション

MySQL 環境をローカル (192.168.1.152) にデプロイし、リモート クライアント 1...

マルチコア CPU を使用して Linux コマンドを高速化する方法 (GNU Parallel)

非常に大量のデータ(数百 GB)を計算する必要があったことはありますか?または、その内部を検索したり...

Centos8で静的IPを設定する方法の詳細な説明

CentOS 8をインストールした後、ネットワークを再起動すると次のエラーが表示されますエラーメッセ...

Reactは無限ループスクロール情報を実装する

この記事では、無限ループスクロールを実現するためのReactの具体的なコードを参考までに紹介します。...

JDBC-idea で mysql をインポートして java jar パッケージに接続する (mac)

序文1. この記事ではMySQL 8.0バージョンを使用していますバージョン5.0と比較すると、パッ...

ユーザーのニーズがマーケティング指向のデザインにつながる

<br />それぞれのトピックについて、チーム内でメールで議論します。議論が白熱するにつ...