ExcelVBAのメリット・デメリット
ExcelVBAのメリットとデメリットを紹介したいと思います。
隙間プログラマーなので主にPythonとの比較となっています。
メリット
WindowsOSであれば開発環境と実行環境が整っている
WindowsPCが一般的になっているので実質どこでも使えます。
Pythonを使うまでは気にしていませんでしたが重要でした。
Pythonでツールを作ってexe化すればPythonが入ってなくても使えますが、エラーの際にデバッグができません。自分のPCだけで使うのであれば全く問題ありませんが、ツールを他の人に提供してそこでエラーが起きた際は調査ができません。
Excelの操作性が抜群に良い
当たり前ですが。
入力値のチェックをしてエラーとなった場合でも開いているシート上ですぐ修正することができます。
Pythonの場合だと値を修正する為に毎回テキストを開いて保存して閉じる必要があります。
デメリット
WindowsOS以外では使えない
ExcelなのでWindowsOS以外だと基本使えません。
PythonだとLinux系OSは標準搭載なのですぐ使えます。ここは逆ですね。
古くからある言語なので柔軟性が低い。と思っています。
コーディングしていてもPythonの方が融通が効く事が多いです。
VBAだと、「あれ?なんでここエラーなの?値入らないぞ。if文かますか・・」となります。
結局は環境とやりたい事に合わせて使う
VBAから入ったら何でもVBAで作る派でしたが、他の言語を触るとやっていることはほとんど同じなので環境によって2、3個扱えるようになっておけば不自由ないと思います。
Wireshark TCP Dup ACKの意味と原因
Wiresharkに表示されるTCP Dup ACKの原因と対処法を紹介します。
原因
経路上でパケットドロップが発生しています。
意味(マーキングされる条件)
3WAYハンドシェイク後で応答ACKパケット番号が同じものが2回出たらマーキングされます。
応答ACKなのでLENは0のみです。
キャプチャデータの見方
TCP Dup ACKを出した側のキャプチャを見ていきます。
図のNo 1120で192.168.50.217のPCが応答ACKを出した際に[TCP Dup ACK 1115#1]となっています。
[TCP Dup ACK 1115#1]はキャプチャした内容からWiresharkが判断してマーキングした内容です。
192.168.50.217のPCがデータパケットを受け取り、172.67.170.128のサーバへ応答のACKを返しています。
その後ACKを返したのにもかかわらず同じデータが送られてきたので
応答のACKを返しています。ここでTCP Dup ACKとなっています。
ここから考えられる事は1回目に出したACKがサーバまで届かなかったので、サーバは再送タイマで同じデータを再送したということになります。
対処法
PCからサーバ間の経路上で輻輳していないか確認して解消させる事です。
輻輳するポイントとしては帯域が狭くなりやすいスイッチのアップリンクやWAN回線の出口です。
インターネット上のサーバとの通信で発生している場合は調査できません。
switchport
switchportはインタフェースをレイヤー2として使うため、インタフェースをL3モードからL2モードに変えるコマンドです。
設定
vlan100,200を作成
Switch> enable
Switch# configer terminal
Switch(config)# vlan 100
Switch(config-vlan)# exit
Switch(config)# vlan 200
Switch(config-vlan)# exit
interface gigabitethernet 1/0/1をL3モードからL2モードへ変えてvlan100を割り当て
Switch(config)# interface gigabitethernet 1/0/1
Switch(config-if)# switchport
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 100
Switch(config-if)# no shutdown
Switch(config-if)# exit
interface gigabitethernet 1/0/2をL3モードからL2モードへ変えてvlan100,200を割り当て
Switch(config)# interface gigabitethernet 1/0/2
Switch(config-if)# switchport
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk allwed vlan 100,200
Switch(config-if)# no shutdown
Switch(config-if)# end
Switch# copy running-config startup-config
削除
- no switchport
状態確認
- show interfaces gigabitethernet 1/0/1 switchport
- show interfaces gigabitethernet 1/0/1 trunk
注意点
関連コマンド
- switchport nonegotiate
- switchport voice vlan
- switchport port-security
- switchport mode private-vlan
- switchport priority extend
- switchport trunk
- switchport block
- switchport mode
- switchport access vlan
channel-group
channel-groupは帯域増強や冗長化を行うため、物理ポートを論理ポートに集約するコマンドです。
設定
物理ポートgigabitethernet 1/0/1と2/0/1をPo1へ集約します。
Switch> enable
Switch# configure terminal
Switch(config)# interface gigabitethernet 1/0/1
Switch(config-if)# switchport
Switch(config-if)# switchport mode access
Switch(config-if)# channel-group 1 mode on
Switch(config-if)# no shutdown
Switch(config-if)# exit
Switch(config)# interface gigabitethernet 2/0/1
Switch(config-if)# switchport
Switch(config-if)# switchport mode access
Switch(config-if)# channel-group 1 mode on
Switch(config-if)# no shutdown
Switch(config-if)# end
Switch# copy running-config startup-config
mode設定部分は接続によって使い分けます。
スニファーなどと接続
- channel-group 1 mode auto
- channel-group 1 mode disable
PAgPの使用できるCisco装置と接続
- channel-group 1 mode auto non-silent
- channel-group 1 mode disable non-silent
- channel-group 1 mode active
- channel-group 1 mode passive
状態確認
- show etherchannel summary
- show etherchannel detail
- show etherchannel 1 detail
- show etherchannel load-balance
注意点
channel-groupの数は上限が決まっていてCatalyst2960は6となっている。
集約できるインタフェースの数も上限がありCatalyst2960だと8となっている。
関連コマンド
- port-channel load-balance
- lacp system-priority
- lacp port-priority
- interface port-channel
ネットワークでも使うLinuxコマンド
操作系
su -
rootユーザに変更する。毎回使う
cd
ディレクトリを変更(一つ戻るときはcd ../)
rm
ファイル削除(削除確認不要な場合はrm -f fw.log)
rm fw.log
cp -p
ファイルコピー
cp -p fw.log fw.log.20210309
mkdir
ディレクトリ作成
mkdir ASALOG
touch
ファイル作成
touch fw.log
mv
ファイル移動
mv fw.log ./old/
chown
所有者グループ変更
chown root:root fw.log
chmod
権限変更
chmod 775 fw.log
scp
リモートでファイルコピー
scp fw.log root@192.168.1.100:/tmp
tar -cvf
圧縮する(解凍はtar -xvf fw.log.tar)
tar -cvf fw.log.tar /ASALOG
shutdown -h now
シャットダウンする
shutdown -r now
再起動する
表示系
pwd
パスを表示
cat
ファイルの内容を表示
grep
表示内容から特定の文字で絞り込む
cat fw.log | grep 192.168.1.100
wc -l
データの行数を表示する
cat fw.log | grep 192.168.1.100 | wc -l
diff
二つのファイルを比較する
diff fw.log fw.log.20210309
df -h
ストレージ使用量を表示
ifconfig
IPアドレスの設定を表示
iptables -L
FW情報を表示
crontab -l
定期実行ジョブを表示
ps -ef
プロセス実行状況を表示
uname -a
OS情報を表示
vi系
vi
ファイル編集
vi fw.log
a
入力モードに変更
ESC
コマンドモードに変更
HJKLキー
左、上、下、右
Dキー2回
1行削除
ctrl+g
最後の行へ移動
:1
1行目へ移動(好きな行へ移動できる)
set number
左に行番号を表示する
xキー
1文字削除
/abc
abcの文字を検索して移動
:wq
保存して閉じる
:q!
保存せず閉じる
【Catalyst】neighbor X.X.X.X Down
%BGP-5-ADJCHANGE:sent to neighbor X.X.X.X Down BGP Notification sent
動的ルーティングのネイバーがダウンしたらどうするか
- show logging
- show interface gigabitethernet X/X
- show ip bgp neighbors
- show ip route
- show ip bgp neighbors X.X.X.X routes
show logging
まずはログを確認します。
インタフェースダウンがあった場合はケーブル抜けや接続先装置の停止が考えられます。
%LINK-3-UPDOWN:interface gigabitethernet X/X ,changed state to down
数分後にアップが出ていたら接続先装置が再起動した線が濃厚です。
%LINK-3-UPDOWN:interface gigabitethernet X/X ,changed state to up
BGPのログが数分後にアップしていたらネイバー装置が再起動したと考えていいですが、
アップまでの時間が短すぎたりする場合は経路上で輻輳が起こっている可能性が考えられます。
%BGP-5-ADJCHANGE:neighbor X.X.X.X Up
show interface gigabitethernet X/X
ダウンしたインタフェースの状態を確認します。
gigabitethernet is down,line protocol is down(???)
???にはいずれかの状態が表示されます。
connected 接続できている
notconnect ケーブルが刺さっていない
disabled shutdownコマンドにより閉鎖されている
errdisable ループなどインタフェースに設定したエラー検知機能により閉鎖されている
show ip bgp neighbors
接続できているか確認します。
stateがEstablishedであればOKです。
それ以外の場合はルートのやり取りを行なっていない状態なので問題があります。
BGP neighbor is X.X.X.X〜
BGP version〜
BGP state = Established
show ip route
ルーティングテーブルを確認します。
viaの後にネイバーのIP(X.X.X.X)があればルーティングできています。
B 192.168.0.0/24 [20/100] via X.X.X.X,0w0d
無い場合はバックアップの可能性があるので次のコマンドも試します。
show ip bgp neighbors X.X.X.X routes
BGPでのルートの受け取り確認をします。
Next HopにネイバーのIP(X.X.X.X)があれば受信できています。
このコマンドで表示されているがshow ip routeに表示されない場合はおそらく他のネイバーから同じルートを受け取っていてそちらの方がMetricが高い可能性があります。
Network Next Hop Metric LocPrf Weight Path
192.168.0.0/24 X.X.X.X 200 0 60000