かべぎわブログ

ブログです

シェルスクリプト

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コマンドが使えないのでシェルスクリ…

jsonの配列をシェルスクリプトとjqでループさせて取得する

概要 AWSCLIで取得した結果が配列というかJSONというかなんというかみたいな形式で非常にシェルスクリプト上でさわりにくいのでjqコマンドををつかって取得してみます。 前提 たとえばAWSCLIを実行してこんなかんじでインスタンスIDとインスタンスタイプを取…

awkのフィールド指定のところを変数で指定する

概要 awk '{print $1}'とかやる$1の部分を変数で指定したい。 やりかた awk -vのあとに変数=値で指定してあげる。 $ echo "AAA BBB CCC" | awk -v "wawawa=3" '{print $wawawa}' CCC シェルスクリプト内で宣言した変数を入れることも可能。 #!/bin/bash henn…

シェルスクリプトで複数インスタンスに一気にタグをつける

概要 シェルスクリプトとAWSCLIを利用して複数のインスタンスに一気にタグを付けてみたいと思います。 スクリプト こんなかんじでやってます。 肝心のAWSCLI実行部がJSONのなかに変数をしこむために地獄の様相を呈していますけれど仕方がなかった。 実行して…

mktempをつかってシェルスクリプトでユニークなtempファイルをつくる

概要 シェルスクリプトでtempファイルを作成するときに以下のようにすることが多いかと思います。 echo 'wawawa' > ./hoge.txt ただこれだとカレントディレクトリにすでにhoge.txtが存在した場合に上書きしてしまって、人の大事なtempファイルを消してしまっ…

シェルスクリプトでFizzBuzzをつくる

概要 なんだかんだで一度もやったことがなかったのでシェルスクリプトでFizz Buzzをつくってみました。 スクリプト おわりに ワイン飲みながら所要時間6分くらい なかなかなのでは? [改訂第3版]シェルスクリプト基本リファレンス ──#!/bin/shで、ここまでで…