unix
リバースプロキシから渡ってきた HTTP リクエストで WebApp がエラーになるという状況が発生しました。 状況としては、 リバプロにはぼくたちはアクセスできないし、そのリバプロにリクエストを送ることもできない。 リバプロから WebApp 用 FW に何らかの H…
みんな大好き grep についてですが、かなり機能が豊富な一方でなかなかそれがまとまっていないこともあるのと、自分自身、結構細かな Tips を忘れたりするので、ここで簡単にまとめてみたいと思います。 OR 検索 後述する拡張正規表現でも可能といえば可能で…
定期的に忘れるんだけど、~/.ssh/known_hosts にあるエントリをスクリプトから消すコマンドは、ssh-kengen -R。 そもそも known_hosts とは 接続したことのある各ホストの公開鍵を保存しているファイルで、普通の文脈だとユーザレベルのファイルである ~/.ss…
特定ディレクトリ配下で特定の拡張子を持つファイルを探すのは find コマンドで一発ですが、一方で、特定ディレクトリ配下の拡張子をすべて抽出する、というユースケースがあります。 ぼくは、.gitattributes に書く拡張子って何にしよう、ってときに、その…
Github 上にある特定 user のリポジトリをぜんぶローカルに持ってきたいなぁというときのワンライナー。 nablarch のところは適当なユーザに書き換えれば OK。ghq ではなく単に git を使いたければ、ghq get を git clone に変えれば良いです。 $ curl 'http…
みんな大好き find コマンド、-newer オプションというのをはじめて知った。find コマンド、マニュアルを読む度に発見ある。 -newer オプションはファイル名を引数に取って、そのファイルよりも modification time が新しいと true を返す述語になってる。 …
重箱の隅を突つくような話ですが、ls の結果を awk するのは筋が悪いと言われています。ファイルパーミッションを抜くとか、そういうときに、このような使われ方が為されますが、だいたいの場合は代替案(もうちょっと相応しいコマンド) があるので注意しまし…
以下のエントリで HTTPS 通信を試してみましたが、このような試験環境を作るのはわりとメンドい。 メンドいことを何度もやりたくないので、実施した内容をエントリに残しておきます。 クライアント認証を含めた HTTPS の双方向認証を行うためには、以下が必…
バイナリを hex encoded で表現するというケースが最近増えてきて、たとえば CBC の初期ベクトルを hex encoded で表現するとか、鍵を hex encoded で表現するとか。 16 進数というと hexdump があって、たとえば 0aA は 16 進数で表現すると 306141 になる…
Java で AES 暗号化とかやってて、コマンドラインで簡単に試せれば良いのになぁとか思ってたら、openssl 使ったら余裕で暗号化できることに気付いた。 例えば、AES/CBC の 128 bit 鍵長で暗号化したい場合は、以下のようにすれば良い。 -e は暗号化、-d は復…
curl はどうも HTTP 用と思われている節がありますが、実は様々なプロトコルに対応しています。 たとえば SMTP にも対応しているので、がんばったら gmail にもメールが送れたりします。 $ cat <
なんか良くわからないエラー (no [ライブラリ名] in java.library.path みたいなヤツ) が出てきたのだけれど、解決方法が java.library.path の設定ではなく、LD_LIBRARY_PATH の設定だったりした。この手のエラーに苦しめられ続けており、そのあたり、ちょ…
気軽にアップデートできない Linux のパッケージを、気軽にインストールしたいわけ。 気軽にインストールするために yum 使いたいんだけど、気軽に yum update した結果としてパッケージの互換性崩れて死にたくないわけ。 そういうときにどうすれば良いかを…
タイトルのとおりで、grep に --only-matching (-o)オプションあって驚愕した結果として心がぴょんぴょんした。 とりあえず手元にある Mac の grep だと $ grep --version grep (BSD grep) 2.5.1-FreeBSD になってるけど、--only-matching オプション存在し…
まぁ、ipcalc 使いましょう。initscripts に含まれてるので、基本つかえるとおもいます。 |tcsh| $ rpm -qf which ipcalc initscripts-9.03.40-2.el6.centos.1.x86_64 ||< ブロードキャストアドレスやネットワークアドレスは次のようにして計算できます。 |t…
CentOS 6 を使う機会があって、/etc/sudoers に設定入れるかって /etc 見たら、/etc/sudoers.d とかいうディレクトリがあった。 で、/etc/sudoers を見ると ## Read drop-in files from /usr/local/etc/sudoers.d ## (the '#' here does not indicate a comm…
ハードディスクとか廃棄したり、別の人に譲渡するときに、ハードディスクの中身を綺麗に消したい、復旧させられないようにしたいっていうことがあります。 たとえば rm file で file を消すことができますが、これはあくまでインデックスが消えているだけで…
入社直後は Excel 使ってグラフ書いたら負けみたいなの思ってたけど、最近は諦めが当たり前みたいになって、アクセスログの集計結果を Excel に貼り付けてグラフ化して報告みたいなことしてた。 でも Excel は行数がなんか少なくて、Excel 2003 だと までし…
brew install jq しましょう。まずはそれからだ。 ** JSON の整形 良くあるけど、どっかの API から雑なかんじで適当にインデントされた JSON が返却されたりして、JSONPath を書くにしろ、まずは整形しないと JSON の構造が分からん、みたいな悲しいことに…
初歩的ではあるのですが、join コマンドというのは、個人的には他の人が使っているのを見たことがないレベルの不遇のコマンドです。一言で言えば、(ファイルがソートされていることを前提に) 2 つのファイルの inner join を取ることができます。一日毎にロ…
特定ディレクトリ配下のファイルを移すときとかでこういうの書いてるの見るけど、ファイル数が多いんだったら止めた方が良いです。 10 万くらいのファイルをこれで動かそうとすると、クソみたいに時間がかかるみたいなことあります。 $ find . -type f | xar…
最近はなかなか御目にかかることのなくなった表題のような事案。たとえば、文字コードが EUC のサーバに、Windows からファイル名が Shift_JIS のファイルを FTP で置いちゃいましたーみたいな状況。 こういうのを Linux から見ると文字化けしているため、何…
バックグラウンドで動作させているバッチが予想以上に動いているらしい、でもログを出していないようなので、バッチが動いているかどうかはプロセスの生死で確認するしかない、みたいな状況があったりします。 このためには $ ps -ef | grep Batch などとし…
人生の喜びを失くしたみなさんこんにちは!今日も死地に赴いてますか!!!!!l みなさんの喜びはもはや取り戻せないけど、公開鍵をなくしても秘密鍵があればリカバーできます。よかったですね。 |tcsh| $ ssh-keygen -y -f id_rsa > id_rsa.pub ||< 手元…
簡単に現在のメモリ使用量を確認するコマンドとして free がありますが、free コマンドで出力される Mem-free が少ないからといってパニックに陥る必要はありません。 Mem-free は、その時点でメモリに乗っているバッファキャッシュやページキャッシュの領域…
env に -i 引数を渡してコマンドを実行する。 $ env -i your_command よく知られている env コマンドの使い方は設定されている環境変数を出力することである。何も引数を与えないで env コマンドを実行すると、設定済みの環境変数が標準出力に出力されるので…
よく、非常に重要なディスク変更を伴う作業などで $ sync $ sync $ sync ってやれみたいな話を聞きますが、これって $ sync # 一息入れる っていうのと何か違ったりするのかなみたいな疑問を未だに持っています。 sync の意味 そもそも sync(8) は、ディスク…
あたりまえだが、awk はシェル変数を参照できない。例えば以下のコマンドラインは 5 を出力せず、空行を出力する。 |tcsh| $ VAR=5 awk 'END { print VAR }' /dev/null ||< 一行だけを見ると、あぁそうなのかというくらいの話なのだけど、よく詰まるのがシェ…
休日であることを良いことに、zsh の prompt を初歩から学ぼうと思って、作った結果がこれである。 || PROMPT=$'[%n@%m(job:%j)]%(?|%{\e[32;21m%}%#%{\e[m%}|%{\e[31;21m%}(ret:%?%)%#%{\e[m%}) ' ||< もはや悪い冗談としか思えない劣悪なプロンプト定義で…
ssh でのログインで一々パスワードを入力するのは正直メンドい。そもそも ssh でパスワードを要求されるのはパスワード認証であるから、これを RSA/DSA 認証を行うように変えてやればパスワードは要求されない。すごい。これでみんなが幸せになれる。 しかし…