SBSettings ScriptyでSSHポートフォワードトグルを作った
自鯖の管理画面(webminとかmrtgとか)は、外部公開せずにsshポートフォワードをしてからいつもアクセスしてます。
PCからだったら別に問題ないんだけど、iPhoneから見たい場合にSSHトンネリングしなきゃいけない。
けど、有料App買うのも嫌だし、いちいちMobileTerminalから打つのもめんどくさい。
というかSBSettingsでトグルしたい。
Macで開発環境があればそれで作っちゃえばいいんだろうけど、
Windowsしか無いんでmoyashiさん謹製「SBSettings Scripty」を使って作りました。
基本的な作り方は本家に書いているので、自分が作った部分だけメモ。
準備
SBSettings Scripty
これが無いと始まらないのでCydiaでインストールする。
MobileTerminal
http://code.google.com/p/mobileterminal/downloads/list
ここから最新のdebを拾ってきて、iPhoneに転送してiFileでインストール
rootパスワード変更
基本。SSHd入れてないからまだやってなかった。
OpenSSH
Cydiaから。
BigBoss Recommended Tools
作業に便利なんでCydiaから入れる。
Vi IMproved
同じく便利なんで入れる。
SSHの接続設定を作る
/private/var/root/.ssh/config
Host hoge HostName exsample.com User piyo IdentityFile ~/.ssh/id_piyo LocalForward 8080 localhost:8080 LocalForward 10000 localhost:10000 LocalForward 3306 localhost:3306
鍵認証させるんで、鍵ファイルは~/.ssh/に設置。
この時点でTerminalから
ssh piyo
こんな感じで接続できることを確認しておく。
/private/var/mobile/Library/SBSettings/Toggles
本家の指示通りに、SBSettings Scriptyをインストールした時点で入っているScripty1を流用する。
Info.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>ScriptyId</key> <string>hoge.connect</string> <key>ShouldTransitionOut</key> <false/> <key>HasStatus</key> <true/> <key>DelayTime</key> <integer>0</integer> <key>AllowInCall</key> <false/> </dict> </plist>
Toggle.dylibはそのままコピー。
/private/var/mobile/Library/SBSettings/Commands
実際のスクリプトを設置する部分。
以下、hoge.connectはInfo.plistでScriptyIdで記述したものに合わせる
hoge.connect-launch-when-decision-state
トグルの状態を決定するスクリプト。
exit 1でon、exit 0でoffになる。
#!/bin/sh ps ax | grep "[s]sh hoge -N" > /dev/null if [ $? -eq 0 ]; then # ssh is running -> toggle state on exit 1 else # ssh is not running -> toggle state off exit 0 fi
その他
/private/var/mobile/Library/SBSettings/Themes
トグルの画像をつけたいなぁと思って、適当に検索してみつけた、
http://www.iconshut.com/application-icons/1187-toolbar-2-icons.html
この辺のアイコンを使って、on.pngとoff.pngを作成。
killall sbsettingsd
新しいScriptyトグルを作る手順の項に以下のような記載があります。
6. sbsettingsdをkillall:/var/mobile/Library/SBSettings/Commands/に追加したスクリプトをsbsettingsdに認識してもらう必要があるため、sbsettingsdをroot権限でkillallする。「$ sudo killall sbsettingsd」
これは、最初だけでOKっぽいです。
一度これをやってsbsettingsdにスクリプト名を覚えさせておけば、sftpなんかで上書きした側から新しいスクリプトは有効になってたっぽいです。
というわけで、Mac無しに簡単なトグルの作成が出来てしまいました。
シェルスクリプトなんて殆ど知らなかったけどどうにかなった。
いろいろ遊べそうだなぁ、これ。
moyashiさん、本当にありがとうございました。
ところで、iPhoneのMySQLフロントエンドについて
無料で入れられるやつを二つほど試してみたけど、
DB Tracklayer - TRACKSYSTEMS Co.,Ltd.
DataGlass MySQL - impathic
どっちもインストールは無料で、フルバージョンは\600。
制限バージョンだと見れるレコード数が少ない制約がある。
ちょっと使った感じだとDataGlassの方がいいかな。画面も見やすいし、UIは作りこまれてる。
ただ…日本語のローカライズが最低水準だけど…OKボタンが「[OK]を」とかになってるし…。
Appごとに言語を固定するようなJBAppってあったっけ…あるなら良いかもしれない。