かべぎわブログ

ブログです

シェルスクリプト

ワンライナーで特定のタグのついたインスタンスを起動/停止する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で、ここまでで…

$RANDOMの精度があまりよくないという話をきいたのでしらべてみる

概要 $RANDOMは乱数としてはそんなに精度が高くないみたいなはなしを聞いたような聞かなかったようなきがしたので雑に調べてみる。 調べ方 echo ${RANDOM}を無限ループでぶん回す 1億行くらいになったら止める ばらつきを集計する 1. echo ${RANDOM}を無限ル…

シェルスクリプト上で乱数を扱う方法まとめ3選

概要 シェルスクリプトを書いていて、乱数が使いたいなーと思ったときにつかえるコマンドをご紹介します。 ${RANDOM}をつかう bashのシェル変数である${RANDOM}を利用します。 この変数は参照されるたびに0~32767の値を返します。 手っ取り早いですが、あま…

readコマンドで対話的なシェルスクリプトをつくる

概要 readという標準入力を1行読み込むことのできるコマンドを利用して対話的なシェルスクリプトを作ってみようと思います。 スクリプト スクリプトはこんなかんじ ちょっとした説明 readコマンドを利用して標準出力を読み込んで変数に格納しています。 それ…

cd - で一つ前にいたディレクトリに戻る

概要 cd -コマンドを利用することで一つ前に自分が居たディレクトリに戻ることができます。 コマンド例 $ pwd /Users/kabegiwa/Downloads $ cd $ pwd /Users/kabegiwa $ cd - /Users/kabegiwa/Downloads おわりに これでまちがってcd実行してホームディレク…

pipをプロキシ環境で利用する

概要 pipコマンドをプロキシ環境で利用する方法についてご紹介します。 コマンド例 こんなかんじでオプションをつけてあげることでプロキシをとおした環境でもpipを利用することができます。 pip install awscli --proxy http://example.proxy:8080 [試して…

Ansibleのec2.pyの結果のJSONをホストグループ形式のファイルにしてみる

AnsibleでAWSのイントラを管理するときに利用するec2.pyの結果で応答されるJSONを人間に優しいホストグループ形式に変換してみたいと思います。 スクリプトはこんなかんじ スクリプト自体はこんなかんじです。 シェルスクリプトでsedで変換かけているだけで…

commコマンドで2つのテキストファイルの比較結果を出力する

あんまり知られてないような気がするけれど結構便利なcommコマンドについてまとめてみます。 commコマンドとは? commコマンドとは、2つのソートされたテキストファイルを比較できるコマンドです。 ファイルを比較して、片方のファイルにしか存在しない行や、…

Amazon Linux2 に自作サービスを追加する

今回はAmazonLinux2のSystemdに自作サービスを追加してみようと思います。 手順 サービスとして追加するスクリプトの準備 ユニットファイルを作成する 各項目のちょっとした解説 サービスとして認識されたかどうか確認する サービスを有効化(enable)する サ…