かべぎわブログ

ブログです

シェルスクリプト

シェルスクリプトで棒グラフみたいなのつくる

あんまり差がなくておもしろくないけどこんなかんじになる。 関東の人口グラフ。 $ ./graph.sh --file ./kanto_sum.txt ibaraki ▇ 2970 tochigi ▇ 2008 gunma ▇ 2008 saitama ▇▇▇ 7195 chiba ▇▇▇ 6216 tokyo ▇▇▇▇▇▇ 13159 kanagawa ▇▇▇▇ 9048 たべさせたファ…

getoptつかってオプションをいいかんじにつかう

さいきんよくやるやつ。 こんなかんじ。 gistb79e9a8f282fdd761c1ee110409f5df4

scriptreplayでコンソールログを再生する

scriptコマンドでコンソールのログをとって、scriptreplayでそれを再生します。 scriptコマンドでコンソールのログ取得開始。 exitで終了。 LANG=C script --timing=file.tm script.out scriptreplayで再生開始。 たのしい。 scriptreplay --timing file.tm …

IAMポリシーを更新してくれるシェルスクリプトを書いた

IAMポリシーを更新してくれるシェルスクリプトです。 バージョン数が5を超えていると最も古いバージョンを削除してくれます。 シェルスクリプトは最近書く機会があんまりないんだけれどもやっぱり楽しいですね。 1日1問、半年以内に習得 シェル・ワンライナ…

手元のDockerイメージをECRにプッシュしてくれるスクリプトをかいた

べんりですね github.com

bashで変数に変数を代入する

こんなかんじ。 $ environment='dev' $ dev_account_id='AAA' $ eval account_id=\"\$${environment}_account_id\" $ echo ${account_id} AAA

sedで複数ファイル一気に置換する

これ find *.txt | xargs sed -i -e "s/before/after/g"

Podの中のコンテナの名前を表示してくれるシェルスクリプト

かきました。 実行するとこう $ ./get_containers.sh -n istio-system --- istio-ingressgateway-5d959cb111-5rqbx istio-proxy --- istiod-74c6d9c222-gpphl discovery --- prometheus-5647688333-kqxq8 prometheus istio-proxy

全Podを削除するシェルスクリプト

こんなかんじ。 #!/bin/bash pods=`kubectl get pods "-o=jsonpath={.items[*].metadata.name}"` for pod in ${pods}; do kubectl delete pods ${pod} done

全Podにコマンドを実行するシェルスクリプト

こんなかんじ。 #!/bin/bash pods=`kubectl get pods "-o=jsonpath={.items[*].metadata.name}"` for pod in ${pods}; do kubectl exec ${pod} なんかてきとーなコマンド done

waitで別プロセスの終了を待ち合わせてから実行する

概要 シェルスクリプト中で別プロセスでコマンドを実行して、その終了を待ち合わせてから先に進むみたいな並列実行を実現してみます。 スクリプト こんなかんじ。 waitコマンドは指定したプロセスIDを待ち合わせることができます。 それを利用します。 #!/bi…

シェルスクリプトで連想配列をつかう

概要 シェルスクリプトで連想配列をつかってみます。 スクリプト こんなかんじ。 declare -Aで宣言してあげます。 #!/bin/bash declare -A test_array test_array['name']='kabegiwa' test_array['age']=28 echo "name: ${test_array[name]}" echo "age: ${t…

sudoでもリダイレクトがしたい

概要 sudoでリダイレクトがしたくなった。 たとえば以下のようにやるとPermission Deniedってなってしまう。 sudo echo 'wawawa' > /etc/wawawa.txt bash: permission denied: /etc/wawawa.txt 対処法 bash -cをつかってあげる。 以下のようなかんじ。 sudo …

ワンライナーで特定のタグのついたインスタンスを起動/停止するAWSCLI

概要 AWSCLIのワンライナーで特定のタグのついたEC2インスタンスを起動/停止してみます。 インスタンスを起動する Nameタグがwawawaとなっているインスタンスを起動するワンライナー $ aws ec2 start-instances --instance-ids `aws ec2 describe-instances …

mysqlのパスワードをコマンドラインからわたして接続する

こんなかんじで--password='パスワード'とすることでパスワードをコマンドラインからわたすことができます。 $ mysql -h example.com -P 3306 -u ユーザ名 --password='パスワード' ただ、あまりこの使い方は推奨されていない。 平文でパスワード書くことに…

BMIを計算するシェルスクリプトを書いた

概要 戯れにBMIを計算してくれるシェルスクリプトを書いてみた。 スクリプト こんなかんじ。 動かしてみるとこんなかんじ。 bmi.sh 身長 体重でうごく。 ちなみにいまの身長体重はこんなかんじ。 だいぶやせた。 $ ./bmi.sh 178 68 21.46 年始はこのくらいあ…

何回閉じても無駄ですよ~のシェルスクリプトを書いた

概要 何回閉じても無駄ですよ~のシェルスクリプトを書いた。 「何回閉じても無駄ですよ~」が無限にでる。 Ctrl-cで終わらせることはできない。 スクリプト うごかしてみる 実際にうごかしてみるとこんなかんじになる。 $ ./arrest.sh 何回閉じても無駄です…

シェルスクリプトでコマンドの実行を待ち合わせる

概要 シェルスクリプトで実行中のコマンド(プロセス)の完了を待ってから、処理をしてみたいと思います。 waitコマンドを利用してあげることでそれを実現することができます。 スクリプト だいたいこんなかんじ。 うごかしてみる 実際にうごかしてみるとこん…

Ansibleのshellではif文とかもつかえる

概要 しらなかったのでメモ。 つかいどころがあるのかどうかはわからぬ。 playbook たとえばこんなかんじのplaybookがあったとする。 実行してみる こんなかんじでifが実行されていることがわかる。 $ ansible-playbook ./wawawa.yml --extra-vars="hensuu=w…

Linuxでコマンド一撃で1GBのファイルを作成する

Linux環境で1GBとかそれ以上の大容量ファイルをコマンド一撃で作成してみたいと思います。 コマンド こんなかんじでできます。 $ fallocate -l 1G wawawa.txt 確認してみるとこんなかんじ。 $ ls -lh total 1.0G -rw-rw-r--. 1 vagrant vagrant 1.0G Feb 5 1…

鍵認証で踏み台経由で多段scp接続する

概要 踏み台経由かつ鍵認証で多段scpをしてみたいと思います。 コマンド コマンドとしてはこんなかんじ。 $ scp -i 踏み台の鍵 -o ProxyCommand='ssh -i 目的地の鍵 -W %h:%p ユーザ名@踏み台のアドレス' ユーザ名@目的地のアドレス わかりにくいから実際に…

鍵認証で踏み台経由で多段ssh接続する

概要 踏み台経由かつ鍵認証で多段sshをしてみたいと思います。 コマンド コマンドとしてはこんなかんじ。 $ ssh -i 踏み台の鍵 -o ProxyCommand='ssh -i 目的地の鍵 -W %h:%p ユーザ名@踏み台のアドレス' ユーザ名@目的地のアドレス わかりにくいから実際に…

正規表現でスペースを含まない単語だけを一致させる

概要 正規表現を利用してスペースを含まない一つの単語だけを一致させます。 あたりまえというかなんというかなんだけどこれが出てくるまでにわりと悩んだのでメモ。 正規表現 たとえば以下のような文字列のなかからblogが含まれる単語を探すためには by the…

シェルスクリプトで平日なのか土日祝日なのかを判定してみる

概要 シェルスクリプトをつかって今日が平日なのか土日祝日なのかを判定してみたいとおもいます。 平日の営業日にしか動かしたくないんだよなーみたいなときにやくにたったりたたなかったりします。 スクリプト そのシェルスクリプトはこんなかんじ。 holida…

tailコマンドでn行目以降を取得する

概要 tailコマンドを利用してn行目以降を取得してみたいと思います。 コマンド例 たとえばwawawa.txtが以下のようだとする。 $ cat wawawa.txt AAA BBB CCC DDD EEE 以下コマンドを実行するとwawawa.txtの3行目以降を取得することができる。 $ tail -n +3 wa…

シェルスクリプトで奇数偶数を判定する

概要 シェルスクリプトでその数字が奇数なのか偶数なのかを判定してみたいと思います。 スクリプト 実行してみる $ ./odd_even.sh 3 奇数だよ $ ./odd_even.sh 4 偶数だよ おわりに おわりだよ 入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界…

dateコマンドだけでサマータイムを出す

概要 なんかオリンピックのためにサマータイムを導入するみたいな記事をみた。 普通はNTPサーバがよしなにやって、同期してくれるんだと思うんだけどなんかわからないけどそれができなかったときにdateコマンドだけでサマータイムを出してみる。 コマンド -d…

複数のEC2インスタンスに一気にIAMロールをつけるシェルスクリプト

概要 複数のEC2インスタンスに一気にIAMロールを付ける必要があって、マネコンでポチポチするのめんどくさいなーと思ったのでつくった。 スクリプト つかいかた ./role_fukusuu.sh IAMロール名 インスタンスID インスタンスID... $ ./role_fukusuu.sh wawawa…

シェルスクリプトで大文字小文字を置換する

概要 シェルスクリプト上で大文字と小文字置換してみたいと思います。 コマンド例 だいたいこんなかんじ。 大文字から小文字へ置換 $ echo "WAWAWA" | tr '[:upper:]' '[:lower:]' wawawa これでもできる。 $ echo "WAWAWA" | tr '[A-Z]' '[a-z]' wawawa 小…

ソートできないファイル同士を結合するシェルスクリプト

概要 なぜかはわからないけれどソートができないテキストファイル2つがあって、なぜかはわからないけれどそれを共通のキーをもとに結合したいときがあって、前述の通りなぜかはわからないけれどソートができないのでjoinコマンドが使えないのでシェルスクリ…