# tcpdump --help
tcpdump version 3.9.4
libpcap version 0.9.4
Usage: tcpdump [-aAdDeflLnNOpqRStuUvxX] [-c count] [ -C file_size ]
                [ -E algo:secret ] [ -F file ] [ -i interface ] [ -M secret ]
                [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
                [ -W filecount ] [ -y datalinktype ] [ -Z user ]
                [ expression ]
#

とんでもなく古いけど、このバージョンだと、-Wはあるけど、-Gがなくてtcpdumpだけじゃ指定時間実行みたいなのが
できないので、
tcpdump &
して、sleep 60
とかやったあと、
kill $!
みたいなスクリプトを作る

s-nailでメールを送るときのwarningメッセージ

メールサーバはAWSAmazon SESを使ってメールを送ってたんだけど
s-nailがwarningメッセージをはいてたのでそれの修正



ume@seventeen:/etc$ echo "hogehoge5" | s-nail -s "hogehoge5subject" ume256@xxx.xxx
s-nail: Warning: variable superseded or obsoleted: smtp
s-nail: Warning: variable superseded or obsoleted: smtp-auth-user
s-nail: Warning: variable superseded or obsoleted: smtp-auth-password
s-nail: Obsoletion warning: please do not use *smtp*, instead assign a smtp:// URL to *mta*!
s-nail: Obsoletion warning: Use of old-style credentials, which will vanish in v15!
s-nail:   Please read the manual section "On URL syntax and credential lookup"
ume@seventeen:/etc$

めっちゃwarningが出てる・・

今のs-nail.rcが

set smtp=smtps://AWSSES:465
#set nss-config-dir=/etc/pki/nssdb
set from=ume@xxx.xxx

set smtp-auth=plain
set smtp-auth-user=xxxxxxxxxx
set smtp-auth-password=yyyyyyyyyy
#set smtp-use-starttls
set mta=/usr/bin/msmtp

どうやらこれをこんな感じに直すといいみたい。

set mta=smtps://xxxxxxxxxx:yyyyyyyyyy@AWSSES:465
#set nss-config-dir=/etc/pki/nssdb
set from=ume@xxx.xxx

set v15-compat

set smtp-auth=plain

smtps://の形式は許されるみたいですね。なんででしょうね?

ume@seventeen:/etc$ echo "hogehoge6" | s-nail -s "hogehoge6subject" ume256@xxx.xxx
ume@seventeen:/etc$

これならエラーも出なくなるようです。




追加。
ずっとstarttlsのほうでメール送信する方法がわからなくて、smtpsを使ってたわけですが、
こんな感じで、s-nail.rcかmailrcを書いておけばいいみたいです。

set mta=smtp://xxxxxxxxxx:yyyyyyyyyy@AWSSES:587
#set nss-config-dir=/etc/pki/nssdb
set from=ume@xxx.xxx

set v15-compat
set smtp-use-starttls
set smtp-auth=login


もともとできなかったからstarttlsはスルーしてました。 これでこっちでもメール飛ばせるようです。AmazonSES使って似たようなことをやってる人のブログ見つけました。
sig9.org
ありがとうありがとう。


さらに追記
smtp-auth=login とか smtp-auth=plainとかなんか意味あるのかと思ってたんですが、
なくても動くのですね・・ 

seq vs jot vs bash{..}

どれが一番早いんですかね? 適当なシェルスクリプト組んだ時にできれば一番早いヤツ使いたいわけです。

というわけで単純比較

ume@fifteen:~$ time echo `seq 1 10000000` > /dev/null

real    0m8.760s
user    0m6.972s
sys     0m1.487s
ume@fifteen:~$ time echo `jot 10000000 1` > /dev/null

real    0m16.704s
user    0m14.171s
sys     0m1.512s
ume@fifteen:~$ time echo {1..10000000} > /dev/null

real    0m18.089s
user    0m12.186s
sys     0m1.173s
ume@fifteen:~$


おや、bash{..}で連番作るのが一番遅いやんけ。。。これが一番早いのかと思ってたよ>< うちの環境のせいですかね???


jotやseqの結果をecho出力じゃなくて、区切り文字をスペースに変えたらどうなるんでしょうね。

ume@fifteen:~$ time seq -s " " 1 10000000 > /dev/null

real    0m0.309s
user    0m0.140s
sys     0m0.168s
ume@fifteen:~$ time jot -s " " 10000000 1 > /dev/null

real    0m6.543s
user    0m6.246s
sys     0m0.167s
ume@fifteen:~$

あれ、さらに早くなった・・・ なんでこういうことになるんでしょう???
seq優秀説?
ま、seqじゃ、bashのecho {a..z} 文字列順番出力みたいなのはできないのですがね。

ubuntu@ip-172-26-7-253:~$ sudo mount box.com
Please enter the username to authenticate with server
https://dav.box.com/dav or hit enter for none.
  Username: xxxxxxxxx@xxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxx
Please enter the password to authenticate user xxxxxxxxx@xxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxx with server
https://dav.box.com/dav or hit enter for none.
  Password:
/sbin/mount.davfs: Mounting failed.
SSL handshake failed: Connection reset by peer
ubuntu@ip-172-26-7-253:~$

うーん、エラーになるぞ・・

bash 配列

配列使えるのでなんか適当なことできないかなと思って、日々取得している各OLTのbit-errorを取得するコマンド結果のファイル
で取得時とその次の取得時でbit-errorカウンタが大きく変動しているものを見つけようとしています。

LISTでlsした結果を配列にしてて seq 1 x で配列の番号確定と必要数ループさせようとしてます。

LIST=($(ls OLT1-BERSTATS-20230601*))
FC=($(ls OLT1-BERSTATS-20230601* | wc -l))

for n in `seq 1 $FC`
do
cat OLT1INT | while read INT
do
BDSBER=($(zcat ${LIST[$n]} | grep "$INT " | awk '{print $3}'))
ADSBER=($(zcat ${LIST[$n+1]} | grep "$INT " | awk '{print $3}'))

BUSBER=($(zcat ${LIST[$n]} | grep "$INT " | awk '{print $4}'))
AUSBER=($(zcat ${LIST[$n+1]} | grep "$INT " | awk '{print $4}'))

if [ $(($AUSBER - $BUSBER)) -gt 1000000 ]; then
echo ${LIST[$n]}
echo "USBER 1000000 over ${INT}" $(($AUSBER - $BUSBER))

fi

if [ $(($ADSBER - $BDSBER)) -gt 1000000 ]; then
echo ${LIST[$n]}
echo "DSBER 1000000 over ${INT}" $(($ADSBER - $BDSBER))
fi
done
done


zcatしてgrepしてるところはzgrepでよさそう。
あと、 ${LIST[$n+1]} こういう書き方が許されるんだーと少し驚いたのでメモ書き