2つのファイルの中身を比較 - diff, comm, grep

・2つのファイルの中身の異なる部分を抽出する → diff

※対象ファイルの中身がソート済みであること

$ diff file1 file2

 

・2つのファイルの中身の同じ部分を抽出する → comm

※対象ファイルの中身がソート済みであること

$ comm -1 -2 file1 file2

オプションの説明

1 : file1の中身のみの存在する行を出力しない

2 : file2の中身のみに存在する行を出力しない

 

・2つのファイルの中身の同じ行を抽出する → grep

※ソート済みの必要なし

$ grep -x -i -f file1 file2

オプションの説明

x : 行全体を検索対象とする

i : 大文字と小文字の区別をつけない

f : 検索パターンとしてファイルの中身を使用する

インストールしたはずのpipが使えない

すでにpipがインストールしたはずなのに、

$ pip 〜

とすると、

command not found

となる場合

 

pip3がインストールされている場合があるので、

$ pip3 〜

とするといい

 

pythonではなく、python3をインストールしている場合、

$ python

ではなく、

$ python3 〜

とするのと同じ

Pythonでデバッグ

Pythonデバッグ方法とコマンド

 

C言語デバッグで使うgdbと似ている。

Pythonデバッグをするためには次のようにコマンドを実行する。

$ python3 -m pdb example.py

 

デバッグ操作コマンド例

コマンド : 説明

b : ブレークポイント。b <行番号>でそこにブレークポイントを設定する。

c : 次のブレークポイントまで実行する。

enable : 無効にされたブレークポイントを有効にする。

disable : 有効にされたブレークポイントを無効にする。

n : 次の行を実行する。次の行が関数などサブプログラムの時は中に入らない。

s : 次の行を実行する。次の行がサブプログラムの時は中に入る。

bt : スタックトレースを表示する。

p : p<変数名>で変数の値を表示する。

l : 現在行周辺のソースを表示する。llでより広範囲を表示する。

u : 上のスタックフレームへ移動する。

d : したのスタックフレームへ移動する。

run : デバッグをリスタートする。

a : 関数の引数を表示する。

cl : 全てのブレークポイントを削除する。cl<番号>でその番号のブレークポイントを削除する。

r : 関数の終わりまで実行する。

h : h<コマンド名>でコマンドのヘルプを表示する。

q : デバッグを終了する。

 

WiresharkでHTTPS通信を復号

curlを使ってhttps通信

Wiresharkでその通信の様子を見ると、パケットは暗号化されており、ApplicationDataとなっているだけで様子が確認できない。

そこで、Wiresharkで復号された通信のパケットキャプチャができるようにする。

<環境>

MacOS Monterey

Wireshark v3.6.5

<処理内容>

HTTPS通信をする際に使う鍵情報がpre-master-secretというもので、このファイルをWiresharkと共有しておくことで復号した通信が表示される。

Wiresharkにpre-master-secretのパスを設定する。

Wiresharkを開いて、上部メニューバーのWireshark->Preferences->Protocol->TLSを選択する。

(Pre)-Master-Secret log filename内に、ログのファイルを入力する。

(例)/tmp/pre-master-secret.log

環境変数SSLKEYLOGFILEにpre-master-secretのパスを指定した状態で、curl通信を行う。

$ SSLKEYLOGFILE=/tmp/pre-master-secret.log curl https://example.com/

 

Wiresharkを見てみると復号された通信を確認できる。ちなみに、この通信内容をファイルに保存しても、復号された通信が保存されるわけではなく、暗号化されたものが保存される。

CentOS6インストール後にネットワークに繋がらない

VirtualBoxにCentOS6をインストール

最初は問題なくネットワークにつながっていたのだが、yumなりを色々といじったからかネットワークがつながらなくなった

 

色々と調べた結果、解決できた方法

 

/etc/resolv.confを開く

(root権限で)

# vi /etc/resolv.conf

その中には

# No nameservers found; try putting DNS servers into your

...

の文が

 

ということで、DNSサーバの構築を行う

# yum -y install bind bind-utils

 

これで問題は解決した

他にも色々とBIND設定を行う必要もあるそうだが、一応ネットワークに繋がらない問題は解決できた