チートシートで提供されるすべての表は、コピーおよび貼り付けが簡単な下の表にも示されています.
の Pythonネットワークプログラミングに関するチートシート カバー:
- 必須の共通インストールモジュール:PIPおよびIDLE
- トップPythonネットワークプログラミングライブラリ
- ネットワークフォレンジック:必要なPythonライブラリとスクリプト
- Pythonキーワード
- データ型、数学演算子
- Pythonを使用したネットワーク分析
- dnspythonライブラリ
- ソケットモジュール(Berkley APIインターフェイス)
- ソケットタイプ、ソケットの作成
- ソケットの例
- スクリプトの例
- 解析モジュール
チートシートJPGイメージの表示またはダウンロード
画像を右クリック 下のJPGファイル(1987年の幅x 2362高さ、ピクセル単位)を保存するか、ここをクリックして新しいブラウザタブで開きます。新しいウィンドウで画像が開いたら、画像をクリックしてズームインし、フルサイズのjpegを表示する必要があります。.
チートシートのPDFファイルを表示またはダウンロードする
ここからチートシートのPDFファイルをダウンロードしてください。新しいブラウザタブで開いたら、PDFを右クリックしてダウンロードメニューに移動します。.
このチートシートに含まれるもの
以下のカテゴリとアイテムがチートシートに含まれています。
必須の共通インストールモジュール:PIPおよびIDLE
PIP(Pythonパッケージインストーラー) | $ sudo apt-get install python-pip |
IDLE(統合開発および学習環境) | $ sudo apt-get install idle |
トップPythonネットワークプログラミングライブラリ
ジャンゴ | 迅速な開発と実用的な高レベルPython Webフレームワーク |
pycos(以前のasyncoro) | 非同期、同時、ネットワーク、分散プログラミング、分散コンピューティングのためのPythonフレームワーク |
ディーゼル | ネットワーククライアントとサーバーを作成するためのクリーンなAPI。 TCPおよびUDPがサポートされています。 HTTP、DNS、Redis、Riak、MongoDBのクライアントをバンドル. |
パルサー | スケーラブルなネットワークプログラムを構築する簡単な方法 |
ツイスト | インターネットアプリケーションのイベントベースのフレームワーク:HTTPクライアントおよびサーバー、SSHv2およびTelnet、IRC、XMPP、IMAPv4、POP3、SMTP、IMAPv4、POP3、SMTPなど. |
ナパーム | マルチベンダーサポートを備えたネットワークオートメーションおよびプログラマビリティアブストラクションレイヤー-サービスベンダーに対応 |
ゲベント | greenevを使用してlibevまたはlibuvイベントループの上に高レベルの同期APIを提供するコルーチンベースのPythonネットワークライブラリ |
セロリ | 分散メッセージパッシングに基づく非同期タスクキュー/ジョブキュー |
ネットワークフォレンジック:必要なPythonライブラリとスクリプト
EDDIEツール | Python用のシステムおよびネットワークの監視、セキュリティ、およびパフォーマンス分析エージェント |
pypcap | Pythonとpcapに基づいた小さなパケットキャプチャツール |
パラミコ | クライアントとサーバーの両方の機能を提供するSSHv2プロトコルの実装 |
ピップ | Python用パッケージインストーラー |
Pythonパッケージインデックス(PyPI) | Python用ソフトウェアのリポジトリ |
Pythonキーワード
>>> インポートキーワード >>> print(keyword.kwlist) |
Python 2.7.15+ [‘and’、 ‘as’、 ‘assert’、 ‘break’、 ‘class’、 ‘continue’、 ‘def’、 ‘del’、 ‘elif’、 ‘else’、 ‘except’、 ‘exec’、 ‘最後に」、「for」、「from」、「global」、「if」、「import」、「in」、「is」、「lambda」、「not」、「or」、「pass」、「print」 、「raise」、「return」、「try」、「while」、「with」、「yield」] |
Python 3.8.0 [「False」、「None」、「True」、「and」、「as」、「assert」、「async」、「await」、「break」、「class」、「continue」、「def」、「 del」、「elif」、「else」、「except」、「finally」、「for」、「from」、「global」、「if」、「import」、「in」、「is」、「lambda」 、「nonlocal」、「not」、「or」、「pass」、「raise」、「return」、「try」、「while」、「with」、「yield」] |
データ型
テキスト | str-x = "こんにちは世界" |
数値 | int、float、complex |
シーケンス | リスト、タプル、範囲 |
マッピング | 口述 |
セットする | set、frozenset |
ブール値 | ブール |
バイナリ | バイト、バイト配列、メモリビュー |
数学演算子
** | 指数 4 ** 2 = 16 |
% | モジュラス/剰余 43%5 = 3 |
// | 整数除算 11 // 5 = 2 |
/ | 分割 11/5 = 2.2 |
* | 乗算 3 * 3 = 9 |
– | 減算 8-3 = 5 |
+ | 添加 2 + 2 = 4 |
== | に等しい |
!= | 等しくない |
< | 未満 |
> | より大きい |
<= | より小さいか等しい |
>= | 以上 |
コメント
# | 行の先頭、または行内から行末までで使用できます |
Pythonを使用したネットワーク分析
ポートスキャナーでNMAPを使用する | $ pip install python-nmap |
NMAPスキャンを実行するコマンド | nmapをインポートする nmScan = nmap.PortScanner() nmScan.scan(’10 .1.0.0 ‘、’25 -443’) |
Pythonで使用されるNMAPコマンド | nmScan.scaninfo()#{‘tcp’:{‘services’:’25 -80 ‘、’ method ‘:’ connect ‘}} nmScan.all_hosts() nmScan [’10 .1.0.0 ‘]。hostname() nmScan [’10 .1.0.0 ‘]。state() nmScan [’10 .1.0.0 ‘]。all_protocols() nmScan [’10 .1.0.0 ‘] [‘ tcp ‘]。keys()#結果-[80、25、22、135] nmScan [’10 .1.0.0 ‘]。has_tcp(25)#結果True / False nmScan [’10 .1.0.0 ‘]。has_tcp(21)#結果False / True |
dnspythonライブラリ
設置 | $ pip install dnspython |
基本的なDNSクエリ | dns.resolverをインポートする 名前= ‘google.com’ 「A」、「AAAA」、「MX」、「NS」、「TXT」、「SOA」のqtypeの場合: answer = dns.resolver.query(name、qtype、raise_on_no_answer = False) answer.rrsetがNoneでない場合: print(answer.rrset) |
MXターゲットと名前の設定を取得する | dns.resolverをインポートする 回答= dns.resolver.query( ‘dnspython.org’、 ‘MX’) |
ソケットモジュール(Berkley APIインターフェイス)
主な機能とメソッド | socket()•ind()•listen()•accept()•connect()•connect_ex()•send()•recv()•close() |
ソケットの種類
SOCK_STREAM | TCPプロトコルの場合•信頼性の高い伝送•パケットシーケンス•接続指向•双方向 |
SOCK_DGRAM | UDPプロトコルの場合•信頼性の低い伝送•パケットのシーケンスなし•コネクションレス(UDP)•双方向ではない |
ソケットを作成する
import socket#ソケットメソッドをインポートします socket.socket()#ソケットを作成する関数 | |
靴下=ソケット。ソケット(ソケットファミリ、ソケットタイプ、プロトコル=値) | |
ソケットファミリー | AF_UNIX または AF_INET |
ソケットタイプ | SOCK_STREAM または SOCK_DGRAM TCP用 & それぞれUDP •例TCP-UDP2 =ソケット。ソケット(socket.AF_INET、socket.SOCK_DGRAM) •例UDP-TCP2 =ソケット。ソケット(socket.AF_INET、socket.SOCK_STREAM) |
クライアントソケットメソッド | connect() |
サーバーソケット方式 | bind()•listen(backlog)•accept() |
TCPソケットメソッド | s.recv()#TCPパケットを受信 s.send()#TCPパケットの送信 |
UDPソケットメソッド | s.recvfrom()#UDPパケットを受信 s.sendto()#UDPパケットを送信します |
その他のソケットメソッド | |
閉じる() | ソケット接続を閉じます |
gethostname() | 現在のPCのホスト名を含む文字列を返します |
gethostbyname() | 現在のPCのホスト名とIPアドレスを含む文字列を返します |
聴く() | TCPリスナーのセットアップと開始 |
練る() | (ホスト名、ポート番号)をソケットに接続します |
accept() | TCPクライアント接続待機 |
connect() | TCPサーバー接続を開始する |
TCPソケットメソッド | |
mysocket.accept() | 接続したリモートアドレスを含むタプルを返します |
mysocket.bind(アドレス) | 指定したローカルアドレスをソケットに接続します |
mysocket.connect(アドレス) | ソケットを介して送信されたデータは、指定されたリモートアドレスに割り当てられます。 |
mysocket.getpeername() | ソケットが接続されているリモートアドレスを返します |
mysocket.getsockname() | ソケット自身のローカルエンドポイントのアドレスを返します
|
mysocket.sendto(データ、アドレス) | データパケットを特定のリモートアドレスに強制します |
ソケットブロッキング | |
setblocking(1) | セットアップブロック |
setblocking(0) | ブロックの削除/セットアップ解除 |
ドメイン名を使用してポート番号を取得する | インポートソケット socket.getservbyname( ‘domain name’) |
IPV6のサポートを確認する | インポートソケット socket.has_ipv6#答えはTRUEまたはFALSE |
getaddrinfo()-サーバーをポートにバインド | ソケットインポートgetaddrinfoから getaddrinfo(なし、 ‘FTP’、0、socket.SOCK_STREAM、0、socket.AI_PASSIVE) [(2、1、6、 ”、( ‘0.0.0.0’、21))、(10、1、6、 ”、( ‘::’、21、0、0))] |
ソケットの例
クライアント側のソケットの例 |
インポートソケット s = socket.socket(socket.AF_INET、socket.SOCK_STREAM) host = socket.gethostname() ポート= 1111 マイサーバー.bind((host、port))#置換 マイサーバー そして 私の顧客 代表的なIP マイサーバー.聞く(5) Trueの場合: 私の顧客,addr = myserver.accept() 印刷("{str(addr)}に接続しました") 私の顧客.send(msg.encode("アスキー")) 私の顧客.閉じる() |
コメント付きのクライアント側ソケットの例 |
#ソケットライブラリをインポート インポートソケット #ソケットオブジェクトを作成 #コンピューターのポートを予約します #ポートにバインド #ソケットをリスニングモードにする #ユーザーが中断するかエラーが発生するまでループ #クライアントとの接続を確立. #お礼のメッセージをクライアントに送信. #接続を閉じる |
スクリプトの例
デバイスのリストを作成する |
>>>デバイス= [‘SW1’、 ‘SW2’、 ‘SW3’] |
VLAN辞書リストを作成する |
vlans = [{‘id’: ‘100’、 ‘name’: ‘staff’}、{‘id’: ‘200’、 ‘name’: ‘VOICE’}, {‘id’: ‘300’、 ‘name’: ‘wireless’}] |
コマンドを収集してネットワークにプッシュする関数を作成する |
>>>def get_commands(vlan、name): コマンド= [] commands.append( ‘vlan’ + vlan) commands.append( ‘name’ + name) コマンドを返す >>> def push_commands(デバイス、コマンド): |
Pythonスクリプトを使用して複数のスイッチにVLANを作成します |
>>>VLAN内のVLANの場合: id = vlan.get( ‘id’) name = vlan.get( ‘name’) print( ‘\ n’) print( ‘Configure VLAN:’ + id) コマンド= get_commands(id、name) デバイス内のデバイスの場合: push_commands(デバイス、コマンド) print( ‘\ n’) |
引用:https://www.oreilly.com/library/view/network-programmability-and/9781491931240/ch04.html |
pythonコマンドを使用してルーターインターフェイスを無効にする |
>>> プッシュインポートからpush_commands デバイス= ‘router2’ commands = [‘interface Eth0 / 1’、 ‘shutdown’] push_commands(デバイス、コマンド) |
解析モジュール
argparse() | argparseモジュールを使用すると、使いやすいコマンドラインインターフェイスを簡単に作成できます。プログラムは必要な引数を定義し、argparseはそれらをsys.argvから解析する方法を見つけます。 |
パーサーを作成する | >>> parser = argparse.ArgumentParser(description = ‘整数の処理’) |
引数を追加する | >>> parser.add_argument( ‘integers’、metavar = ‘N’、type = int、nargs = ‘+’, … help = ‘アキュムレータの整数’) >>> parser.add_argument( ‘-sum’、dest = ‘accumulate’、action = ‘store_const’, … const = sum、default = max, … help = ‘sum the integers(default:find the max)’) |
引数の解析 | >>> parser.parse_args([‘-sum’、 ‘7’、 ‘-1’、 ’42’]) Namespace(accumulate =、integers = [7、-1、42]) |
このPythonネットワークプログラミングのチートシートには、必須の共通インストールモジュール、トップPythonネットワークプログラミングライブラリ、ネットワークフォレンジックに必要なPythonライブラリとスクリプト、Pythonキーワード、データ型、数学演算子、Pythonを使用したネットワーク分析、dnspythonライブラリ、ソケットモジュールなどが含まれています。また、チートシートはJPGイメージまたはPDFファイルで表示またはダウンロードできます。必要に応じて、ポートスキャナーやDNSクエリなどのPythonコマンドも提供されています。このチートシートは、Pythonネットワークプログラミングに興味がある人にとって非常に役立つものです。