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

推薦する

Web デザインでフラッシュ オーバーレイ ポップアップ レイヤーの z-index プロパティを設定しても機能しない

デフォルトでは、Flash は常にページのトップレベルに表示されます。つまり、ページに DHTML ...

eject を使用せずに create-react-app の設定を変更する方法

1. イジェクトが推奨されないのはなぜですか? 1. eject を実行した後、どのような変化があり...

CSS の 6 つの重要なセレクター (3 秒で覚える)

出典: https://blog.csdn.net/qq_44761243/article/deta...

ウェブページコンテンツの閲覧設計手法に関する議論

<br />コンテンツ ページの記事の場合、記事が長すぎる場合やカテゴリ (ランキング)...

CentOS 7 で RPM を使用して mysql5.7.13 をインストールする

0. 環境この記事のオペレーティング システム: CentOS 7.2.1511 x86_64 My...

CSS スタイル分類入門(基礎知識)

CSSスタイルの分類1. 内部スタイル ---- インラインスタイルスタイルタグの使用 <ス...

Centos7 への MySQL8 のインストールチュートリアル

MySQL 8 の新機能: MySQL をバージョン 5.x から 8.x に直接アップグレードする...

LinuxデバッガGDBの基本的な使い方の詳細な説明

目次1. 概要2. gdbデバッグ2.1. ブレークポイントを設定する2.1.1. ブレークポイント...

Dockerfileの指示と基本構造の説明

Dockerfile を使用すると、ユーザーはカスタム イメージを作成できます。基本構造Docker...

MySQL における楽観的ロックと悲観的ロックの例

データベース管理システムにおける同時実行制御のタスクは、データベース内の同じデータに同時にアクセスす...

MySQL 8.0.11 の新機能の紹介

MySQL 8.0 for Windows v8.0.11 公式無料バージョン 64 ビット1. デ...

nginx を使用して 1 つのドメイン名で複数の Laravel プロジェクトを構成する方法の例

背景会社のサブプロジェクトが増えるにつれて、さまざまなサイズのプロジェクトが10個以上になります(バ...

TeamCenter12 にログインする際の 404/503 問題の解決方法

TeamCenter12はアカウントのパスワードを入力し、ログインをクリックすると、404または50...

ブラウザのキャッシュを防ぐために、js または css の後に ?v= バージョン番号を追加します。

コードをコピーコードは次のとおりです。 <span style="font-size...

Dockerボリュームのファイルマッピング方法

背景ブロックチェーン ログ モジュールで作業しているときに、コンテナーが実行されている場合は、ログ ...