2018年10月26日金曜日
【Linux】時計2【コマンド】
2018年10月25日木曜日
【tcpdump】TCP Retransmission発生【Linux】
本来はそこまで気にしなくていいかもしれないが、tcpdumpで取得したパケットキャプチャをWiresharkで見たら、パケットが黒だらけ。
TCPのSYNがTCP Retransmission(TCPレベルのリトライ)となっていた。初回のアクセスを0秒として
1秒後(前のパケットから1秒後)
3秒後(前のパケットから2秒後)
7秒後(前のパケットから4秒後)
15秒後(前のパケットから8秒後)
31秒後(前のパケットから16秒後)
とリトライをしていた。※1
クライアントがサーバに対してSYNを送信し、その応答としてサーバがクライアントにSYN ACKを返すはずだが、それが返されないため(ネットワークのどこかでパケットがドロップした※2)、クライアントの(OSが自動的に)SYNを再送していた。で、結局31秒後の再送でやっとSYN ACKが返されて通信は無事に終わった。
ネットワーク部門は別会社のため、聴くことはできず、原因が不明のまま…
※1 使用していたのはCentOSで、リトライの回数・間隔はOSによって変わる。
※2 原因不明。
TCPのSYNがTCP Retransmission(TCPレベルのリトライ)となっていた。初回のアクセスを0秒として
1秒後(前のパケットから1秒後)
3秒後(前のパケットから2秒後)
7秒後(前のパケットから4秒後)
15秒後(前のパケットから8秒後)
31秒後(前のパケットから16秒後)
とリトライをしていた。※1
クライアントがサーバに対してSYNを送信し、その応答としてサーバがクライアントにSYN ACKを返すはずだが、それが返されないため(ネットワークのどこかでパケットがドロップした※2)、クライアントの(OSが自動的に)SYNを再送していた。で、結局31秒後の再送でやっとSYN ACKが返されて通信は無事に終わった。
ネットワーク部門は別会社のため、聴くことはできず、原因が不明のまま…
※1 使用していたのはCentOSで、リトライの回数・間隔はOSによって変わる。
※2 原因不明。
【PowerShell】1ファイルずつzip圧縮【Compress-Archive】
●拡張子指定
dir *.txt | % { compress-archive $_ ($_.basename + ".zip")}
dir *.txt | % { compress-archive $_ ($_.basename + ".zip")}
●全ファイル
dir | % { compress-archive $_ ($_.basename + ".zip")}
dir | % { compress-archive $_ ($_.basename + ".zip")}
●パス指定
dir c:\wk\tmp\ | % { compress-archive $_ ($_.basename + ".zip")}
●解説
%はforeachのエイリアス(別名)
compress-archiveは圧縮コマンド
$_はforeachで取り出される変数
basenameは拡張子を取り除いたファイル名
●拡張子指定した場合
2018年10月15日月曜日
【Java】301 moved parmanently 【HttpClient】
ある日突然JavaのWebアプリ内のWebアクセスのログに、 301 moved parmanentlyが出た。該当のWebページがページを移転したようだ。
Webアプリでは、apache commons HttpClientを使用していて、このライブラリは自動でリダイレクトをしてくれるため、特に対処不要だった。
JavaのWebアクセスって3~4行で簡単に出来るから自分で実装してしまいがちだが、やっぱりライブラリ使った方が安全だった。
2018年10月11日木曜日
【tcpdump】週単位でファイル上書きローテーション【Linux】
sudo tcpdump -i eth0 -s 0 -Z user -G 3600 -w dmp_%a_%H.pcap -z ./gzf.sh
や
tcpdump -i eth0 -s 0 G 3600 -Z root -w dmp_%a_%H.pcap -z ./gzf.sh
など
など
●解説
- -G:3600を指定しているため、1時間毎にファイルが生成される。ファイルのタイムスタンプとして、曜日(%a)と時間(%H)を指定するため、1週間毎にローテーションされる。%aの代わりに%uを指定しても良い。1月ローテーションにする場合は、%d_%Hまたは、%dなどにする。
- -Z user:実行するユーザー。実在するユーザを指定する。
- -z gzf.sh:圧縮&上書き時にプロンプトを表示しない。プロンプトが表示されてしまうと、tcpdumpが異常終了してしまうため、強制上書きオプションを指定する。
●gzf.sh
#!/bin/sh
/bin/gzip -f ${1}
yum install perl-DateTime
yum install tcpdump
tcpdump -i ens192 -s 0 -G 3600 -w dmp_%a_%H.pcap -z ./gzf.sh -Z root
②1時間後(9時)
③2時間後(10時)
④次の日
⑤1週間以上経過
●事前作業
ファイル名のタイムスタンプが必要なため、perl-DateTimeが必要。当然、tcpdumpも必要。yum install perl-DateTime
yum install tcpdump
●手順
echo '#!/bin/sh' > gzf.sh
echo '/bin/gzip -f ${1}' >> gzf.sh
chmod 777 gzf.shtcpdump -i ens192 -s 0 -G 3600 -w dmp_%a_%H.pcap -z ./gzf.sh -Z root
●実行
●実行中画面
①取得開始直後(8時)②1時間後(9時)
③2時間後(10時)
④次の日
⑤1週間以上経過
2018年10月4日木曜日
【tcpdump】Permission denied【Linux】
CentOSの話だが、-Gオプションを付けて定期的に別ファイルに書き込む事が出来る(簡易的なファイルローテーションで削除はされない)。
この際、-Zでユーザーを指定しないとローテーションする際にPermission deniedが出て異常終了してしまう。
2018年10月2日火曜日
【Linux】スクリプトファイル指定にすれば早い【sed】
約3.0GBのファイルを置換をした。
対象の置換前文字列は、数十行。
sedコマンドを一行ずつ並べて行ったが、
余りに時間が掛かるため、sedコマンドオプションの-fを使用した。それでもかなり時間掛かったが、-f付きの方が早かった。
登録:
投稿 (Atom)
-
1.Ctrl+End。 2.Enter。※ 3.Ctrl+A。 4.Alt+A。 5.Alt+M。 ※手順1~2を抜かすと漏れるケースがあるので注意。手順1~2の詳細は後述。 また、手順2で改行が追加されるので注意。 ◆画像付き手順 以下のようなデータがある。...
-
◆メニュー 【SQL Server】開発環境構築(ER図作成にSSMSを使用) ◆DDL文をエクスポート(SQL Server Management Studio)手順 1. Winボタン押下&「SSMS」と入力し、Enter。 2. 認証方法を選択し、接続...
-
■簡易手順 ①Win+R ②gpedit.msc ③[ユーザーの構成]-[Windowsの設定]-[スクリプト(ログオン/ログオフ)]-[ログオフ] ④(Win10)[ユーザの構成-管理用テンプレート]-[システム]-[スクリプト]-[実行中のログオフ スクリプトの命令を...