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 における XHTML タグの対応する属性と使用法

XHTML CSS を使って Web ページをデザインし始めた頃は、タグの使用経験も少なく、あまり気...

proxy_pass がパス パスに従って転送する場合の "/" 問題の詳細な説明

nginx で proxy_pass を設定するときに、^~ に従ってパスを一致させる場合は、pro...

JavaScript に関する 6 つの奇妙で便利な点

目次1. 解体のヒント2. デジタルセパレーター3. try...catch...finally が...

Vueは指定された日付間のカウントダウンを実装します

この記事では、指定された日付間のカウントダウンを実装するためのVueの具体的なコードを例として紹介し...

js は複数の画像を zip にパッケージ化します

目次1. ファイルをインポートする2. HTMLページ3. メインコード4. 画像をbase64に変...

Docker プライベートリポジトリの管理とローカルリポジトリ内のイメージの削除

1: Dockerプライベートウェアハウスのインストール1. イメージリポジトリからイメージをダウン...

docker を使用して crownblog プロジェクトを Alibaba Cloud にデプロイする方法

フロントエンドプロジェクトのパッケージ化.env.productionを見つけて、自分のIPまたはド...

Dockerリンクはコンテナの相互接続を実現します

目次1.1. IP経由のコンテナ間のネットワークアクセス1.2. コンテナ名またはコンテナIDによる...

要素の高さを下から上へ、上から下へ制御する CSS メソッド

よくある質問から議論を始めましょう。CSS を使用して要素の高さを [ブラウザ コンテンツ ウィンド...

docker-machineの使い方の詳しい説明

Docker-machineはDockerが公式に提供しているDocker管理ツールです。これは d...

CSS の overflow: hidden の使い方 (オーバーフローの非表示とフロートのクリア)

オーバーフロー非表示指定された高さを超えるテキストや画像情報を非表示にすることを意味します。 <...

React Hooks に基づく小さな状態管理の詳細な説明

目次React Hooks に基づく状態共有の実装ユーザーエクスペリエンスこの記事では、主に Rea...

HTMLの基礎 HTMLの構造

HTML ファイルとは何ですか? HTML は Hyper Text Markup Language...

CSS3+JS による虫眼鏡モードの完璧な実装の詳細説明

約 1 年前、私は「虫眼鏡効果を模倣するいくつかの方法の原理の分析」という記事を書きました。当時、自...

Keras を使って SQL インジェクション攻撃を判断する (例の説明)

この記事では、ディープラーニングフレームワーク keras を使用して、SQL インジェクションの特...