先ほど、AWSでのPublicIP一覧取得について記述したので、今度はAzure。
Azureでは管理ツールが2つ(Windowsで用いるPowerShellと、UNIX系OSで用いるAzureCLI)あるのだけど、そのどちらでもPublicに関しては取得可能だ。

PowerShell

Get-AzureRmPublicIpAddress | Select-Object Name,IpAddress

Azur

...

転職先ではAWSとAzureを使用しているのだけど、結構VM(仮想マシン)とPublicIP(グローバルIP)、PrivateIPの紐付けを忘れてしまう事が多い。
で、いちいちWEBでアクセスして・・・とかやりたくないし、将来的には定期的にCSVとかで一覧を生成させて整形、あとはそれ見ればいいようにしたいので、Macからawsコマンドでその辺りの情報を取得させるようにした。

aws ec2 describe-instances | jq -r '.Reservations[].Instances[] | {InstanceName: (.Tags[] | select(.Key=="Na...

これだけは最低限おさえておきたいiTerm2の便利な機能・使い方9個

転職先で使うクライアントがMacになることから、ターミナルエミュレーターがTeratermからiTerm2に変更になる。
なので、ここのところiTerm2を自宅でいじくっていたのだけど、その際に「とりあえずこの辺だけ押さえとかないとなあ」と思った箇所が幾つかあったので、そのあたりをまとめてみることにした。

1.ターミナルのログを自動取得する

iTerm2では、Teraterm等と同様にターミナルログを自動取得させることもできる(ログ名は固定)。
設定方法は簡単。デフォルトで使用するプロファイルの設定画面で「Profiles」の「Session」を開いて、”Miscellaneou...


iTerm2で複数のタブに同じ処理を行わせる

iTerm2について引き続き。
Teratermのブロードキャストコマンドと同じく、iTerm2でもすべてのタブに同様の処理を行う(ブロードキャストする)ことができる。

対象のiTerm2のウィンドウで、「Command + Shift + i」キーを押下すると、以下のような注意ウィンドウが表示され、それ以降の処理はすべてのタブで適用されるようになる。

なお、ブロードキャストを終了する場合は再度「Command...


iTerm2でウィンドウを分割表示させる

引き続き、またもiTerm2について。
iTerm2では、基本的に新しいセッションを開く際はタブ(もしくはウィンドウごと別に開く)で開くことが多いのだが、どうやら画面を分割することができるみたいだ。

分割表示したいタブで、「Command + D」キーを押下すると横に、「Command + Shift + D」キーを押下すると縦にウィンドウが分割される。

横に分割

縦に分割

分割した各タブへの切り替え...


iterm2でターミナルログを自動的に取得させる

転職先で使用するクライアントがMacになったので、必然的に使うターミナルエミュレーターもWindows用のTeratermからMac用のiTerm2に切り替わる事になった。
で、今まで自宅だとOS Xの場合はUNIXなのでscriptコマンドとtailを組み合わせる等してたのだけど、いい機会なのでiTerm2のログ機能も使ってみる事にした。

iTerm2では、ログ取得を開始する場合は上部メニューから「Shell」>「Log」>「Start」を選択していくことで、ログの保存先PATHやログ名等を指定し、ログを記録していく。

…のだけど、ものぐさかつ忘れっぽいので、こんなん確実に...


iTerm2でターミナルの以前の状態を確認する

今後、仕事でiTerm2を使っていくにあたって色々調べてみたところ、iTerm2には現在開いているターミナルの過去の状態を確認することができる機能「インスタンスリプレイ」なるものがあることを知った。

使い方は簡単。過去の状態を確認したいターミナルで、「Command + Alt + B」キーを押下すると、ターミナルウィンドウ下にバーが表示されるので、表示したい過去時点の時間を選択すれば良い。


pexpectのターミナルサイズを変更する

pythonのpexpectを使っていて、ターミナルのサイズがおかしくなっていることに気づいたのでその備忘。
どうやらpexpcetでは、指定が無いとターミナルのサイズを「24,80」にしてしまうようだ(迷惑な…)。

で、これだとちょっと困るので、以下の例のようにcursesで現在のターミナルサイズを取得させて、pexpectのsetwinsizeでターミナルウィンドウのサイズを修正させることにした。

#! /usr/bin/python
# -*- coding: utf-8 -*-
import pexpect
import os
import curses

# ターミナル...

bashのsetコマンドで覚えておきたい使い方9個

シェルスクリプトを作る上で、以外と便利なのがsetコマンド。
オプションごとに関連性が薄いので覚えにくいのだが、使いこなせれば結構役に立つ事が多いコマンドだ。

今回は、そんなsetコマンドで覚えておきたい使い方についてを紹介する。

1.引数・オプションなしで実行(変数の一覧を表示する)

setコマンドは、引数無しで実行すると現在設定されている変数の一覧を表示させることが出来る。

set

[root@test-centos7 ~]# set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extqu...

Microsoft Azureで仮想マシンの起動ログを取得する

先日、Azure上のLinuxサーバがssh接続できず、そもそもOSが上がっているのかどうなのかわからない、という事があった。
AWSしかり、Azureしかり、こういったクラウドサービスの場合だと仮想マシンのコンソールに接続できず、こういった事が発生すると非常に困る事になる。
で、こういったOSが起動しているのかどうかもわからない状態の場合、基本的にはOSの起動ログを取得して起動していないのか、起動中なのか切り分けを行ったり、もし起動していない場合は対象の仮想マシンのHDDイメージを取得して手元で仮想マシン作って確認したり…といった対応が必要になってくるようだ(後はサポートかな?)。

A...


dateコマンドで現在時刻を騙す『libfaketime』

dateコマンドでは、「-d」で○○日後とか、□月後といった指定で日付を取得することが出来る。
しかし、特定の日付を指定した上で○○日後の日付を指定する事が出来ない。

もしdateコマンドで特定の日付の○○日後、次の○曜日といった指定をする場合、今回紹介する『libfaketime』を用いると便利だろう。
これは、dateコマンドが読み込む現在日時を変数「FAKETIME」とすることで、システム時刻に変更を加える事なく特定の日付をdateコマンドで出力させることが出来る。

1.インストール

まずはインストール。
以下コマンドを実行し、コンパイル・インストールを行う。

gi...