Upgrade to Pro — share decks privately, control downloads, hide ads and more …

xonsh oneliner

xonsh oneliner

xonsh使ったらpythonでonelinerが使いやすくなった話

ravicot

May 11, 2019
Tweet

More Decks by ravicot

Other Decks in Technology

Transcript

  1. whoami インフラ系 技術職 @ravicot ravicot 仮想化技術(openvz, Xen, KVM), ネットワーク設計, セキュリティ製品、ストレージ製品

    メール(Postfix), データベース(MySQL)…etc…etc… 年に数回しかプログラムを書かない
  2. 不整合? killall httpd 報告書つくらなきゃ 今やってるから! どうなってるの? 祭りだ わっしょい プロセス生きてる? どんなときに役に立つの?

    エンジニアには、ゆっくりコードを書けないことがある ああ、障害だ 頼むだれか電話対応 影響範囲は? どのログからみる? 早く復旧してね 復旧まだー? 復旧優先? 原因特定優先? DDoS?
  3. 一 撃 必 殺 ss -ntu |grep '^¥(t¥|u¥)'|awk '{print $5,$6}'

    |sed 's/:[^ ]¥+//' |sort|uniq -c|sort -nr|head -n 5 SYN flood攻撃を60秒で撃退したい!!!
  4. Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB

    0 40 163.49.61.XXX:22 36.11.225.XXX:32877 tcp FIN-WAIT-2 0 0 163.49.61.XXX:443 218.218.98.XXX:50578 tcp FIN-WAIT-2 0 0 163.49.61.XXX:443 218.218.98.XXX:50581 tcp FIN-WAIT-2 0 0 163.49.61.XXX:443 210.20.229.XXX:53970 tcp FIN-WAIT-2 0 0 163.49.61.XXX:443 210.20.229.XXX:53969 tcp FIN-WAIT-2 0 0 163.49.61.XXX:443 218.218.98.XXX:50579 tcp FIN-WAIT-2 0 0 163.49.61.XXX:443 210.20.229.XXX:53965 tcp FIN-WAIT-2 0 0 163.49.61.XXX:443 218.218.98.XXX:50580 tcp FIN-WAIT-2 0 0 163.49.61.XXX:443 218.218.98.XXX:50582 tcp FIN-WAIT-2 0 0 163.49.61.XXX:443 210.20.229.XXX:53964 tcp FIN-WAIT-2 0 0 163.49.61.XXX:443 210.20.229.XXX:53967 tcp FIN-WAIT-2 0 0 163.49.61.XXX:443 210.20.229.XXX:53968 tcp FIN-WAIT-2 0 0 163.49.61.XXX:443 210.20.229.XXX:53966 tcp FIN-WAIT-2 0 0 163.49.61.XXX:443 210.20.229.XXX:53971 一 撃 必 殺
  5. # 標準偏差 awk '{d[NR]=$1;avg+=$1} END{a=avg/NR;for(i in d)s+=(d[i]-a)^2;print sqrt(s/(NR-1))}' datafile awk

    '{d[NR]=$1;avg+=$1} END{a=avg/NR;for(i in d)s+=(d[i]-a)^2;print s/(NR-1)}' datafile #分散 一 撃 必 殺 教授からの宿題を120秒で撃退したい!!! [datafile] 12 15 21 16 ・ ・ ・
  6. AWK VS PYTHON 相関係数を求める awk '{dx[NR]=$1;dy[NR]=$2;avg_x+=$1;avg_y+=$2} END{ax=avg_x/NR;ay=avg_y/NR; for(i=1;i<=NR;i++){s+=(dx[i]-ax)*(dy[i]-ay); sx+=(dx[i]-ax)^2;sy+=(dy[i]-ay)^2}; print

    s/(NR-1)/sqrt((sx/(NR-1))*(sy/(NR-1)))}' datafile ピアソンの積率相関係数 python3 -c "import scipy.stats as st; import pandas; df=pandas.read_csv('datafile',header=None); print(st.pearsonr(df.iloc[0],df.iloc[1]))" python WIN [datafile] 12 33 15 19 21 25 16 36 ・ ・ ・ ・ ・ ・
  7. AWK VS PYTHON ファイルの2行目以降だけ扱いたい awk 'FNR > 1{ print $1

    }' datafile python3 -c "import pandas; print(pandas.read_csv(‘datafile', skiprows=1))" awk WIN
  8. AWK VS PYTHON 後ろから2番目の列を出力する echo "a b c d e"

    | python3 -c "print(list(input().split(' '))[-2])" echo "a b c d e" | awk '{print $(NF - 1)}' awk WIN
  9. AWK VS PYTHON パターンマッチに変数を使用する awk -v 'str=RAVI' 'match($0, str){print $0}’

    datafile python3 -c "data=open('test.csv').readlines(); print([line for line in data if ‘RAVI' in line])" awk WIN
  10. PYTHON VS XONSH 相関係数を求める ピアソンの積率相関係数 df=pd.read_csv('datafile',header=None); print(st.pearsonr(df.iloc[0],df.iloc[1])) XONSHですっきり python3 -c

    "import scipy.stats as st; import pandas; df=pandas.read_csv('datafile',header=None); print(st.pearsonr(df.iloc[0],df.iloc[1]))"
  11. PYTHON VS XONSH 後ろから2番目の列を出力する echo "a b c d e"

    | print(list(input().split(' '))[-2]) echo "a b c d e" | python3 -c "print(list(input().split(' '))[-2])" XONSHですっきり
  12. インストールは5分で終わる(CentOS7.5) # yum install epel-release # yum install python36 python36-pip

    # pip3 install xonsh # xonsh Welcome to the xonsh shell (0.9.0) ~ The only shell that is also a shell ~
  13. 起動してみた # xonsh Welcome to the xonsh shell (0.9.0) ~

    The x-on shell ~ # echo $SHELL /bin/bash # env | grep -i xonsh XONSH_VERSION=0.9.0 _=/usr/local/bin/xonsh XONSHRC=/etc/xonshrc:/root/.config/xonsh/rc.xsh:/root/.xonshrc XONSH_LOGIN=1 XONSH_INTERACTIVE=True