Windows で,フォルダを仮想ドライブとして永続的にマウントする方法

Web で検索すると,subst を使うという,ログオフするだけでマウントが解除されてしまうイケてない方法ばかり出てきて,なかなか正解に辿りつけないので,自分用にメモっておく.
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\DOS Devices
へ,マウントさせたいドライブ名の文字列キーを作成して,マウントしたいパスを次の表記に従って入力するだけ.

\??\C:\Path

subst を起動スクリプトで回すより遥かに楽だと思うので,できる人はやってみるといいよ.

Rlogin という名前の ssh クライアント

作者のページはここ → rlogin/telnet/ssh(クライアント)ターミナルソフト
タブ型sshクライアントとして使っていて,画面分割してターミナルを表示できるのが便利かなと思って入れてみた.
結局,接続先が1つの場合は使い勝手がtmux には及ばず,かつ tmux のコマンドが使用不能となってしまったため,使用を断念した.

不満点

  • tmux ではペーンの移動を上下左右に自由にできるが,Rlogin では順に送ることしかできない
  • 送りコマンドもTabや↑を要するなど,アルファベットキーの範囲内で操作できない
  • 窓内で tmux を使おうにも,窓のサイズ変更に割り当てている Ctrl-t,Ctrl-h のコンビネーションが効かない

puttyのいけてないところは,公開鍵が独自フォーマットなところなのだが,設定の手間さえかければ,それ以降は気にせず使えるので,どちらかというと putty に軍配があがった.

バッチファイルで logrotate

なんか昔に sh で組んだけど,sh が使える普通の環境なら logrotate.d 使えばいいと気付いて,実際には使ってなかった.
(hadacchi_blog : logrotateをするスクリプト)
win で使いたくなって,cygwin はもはや使ってないので,バッチファイルで作った.

使い方は,以下を logrotate.bat とした時,

logrotate.bat hogehoge.ext

エラー処理してないので,利用時は自分で注意してね.

@echo off

setlocal enabledelayedexpansion

for %%i in (%*) do (
  set file=%%~ni
  set ext=%%~xi
  set /a num=0
  :LOOP
    if exist !file!.!num!!ext! ( set /a num+=1 ) else goto ENDLOOP
  goto LOOP
  :ENDLOOP
  set /a num-=1
  for /l %%n in (!num!,-1,0) do (
    set /a tonum=%%n+1
    ren !file!.%%n!ext! !file!.!tonum!!ext!
    if errorlevel 1 ( goto ERR )
  )
  copy !file!!ext! !file!.0!ext!
  if errorlevel 1 ( goto ERR )
)
exit

:ERR
pause

「インターネットオプション」をショートカットに登録

これに限らないんだけど,コントロールパネルにある機能をショートカットに登録する方法.
インターネットオプションの場合…

  • c:\windows\system32\inetcpl.cplへのショートカットを作成する.

標準のアイコンも,cplファイルの中にある.
他の機能とかは,@IT:Windows TIPS -- Knowledge:コントロール・パネル・アイテムをコマンドラインから呼び出す を参照のこと.

Windows7 x64 で NIC 再起動

私の使っている PC は、まれに NIC に刺さっているケーブルを認識しなくなる。
対向の SW やケーブルを変更しても起こるので、PC 自体の問題だろうと思うのだが、原因はよく分からない。
発生頻度も数ヶ月に1回レベルなので、原因が掴みにくい。

それはそれとして、発生頻度が少ないので放置しているものの、長期間、その PC の前に座れない時に遠隔から操作しようとすると、この事象はとても怖い。
なので、被害を最小限に食い止めるため、こんな小細工を弄してみた。

タスクスケジューラで NIC を定期的に再起動する。

この問題が起こった時の解決方法は簡単で、NIC をネットワークデバイスの管理画面から無効/有効と再起動してやれば良い。
これをコマンドラインで実行するのは簡単で、devcon.exe という Windows 標準のコマンドラインを叩けば良い。

> devcon disable %HARDWARE_ID%
> devcon enable %HARDWARE_ID%

ここで、%HARDWARE_ID% は、devcon hwids =net などで表示されるお目当ての NIC のハードウェア ID のうち、一番長いもので良いらしい。
devcon.exe を使って NIC を無効化/有効化する - k3k1::log

Windows 7 x64 で devcon を使う

ところが、Windows 7 x64 ではこれが思い通りに動かない。
調べてみると、Windows 7 x64 用の devcon が標準でインストールされていないためで、Microsoft download center からもダウンロードできないため、どこかから調達する必要があるらしい。
"Disable failed No devices disabled" devcon.exe | How to disable devices from command prompt ~ Techytips

タスクスケジューラで実行

このコマンドを bat ファイルにして実行すると、権限不足でうまく行かない。
タスクスケジューラで実行する場合は、「最上位の特権で実行する」をチェックしておくと良い。

SKKFEP

記事を書いたつもりが、なんか残ってなかったので改めて書いておく。
バイナリは、ここから DL → co Programs
skk-fepとも.

  1. setup.js を起動
  2. IE の窓から「インストール」をクリック
  3. 何度か出る UAC を全部 OK
  4. (個人的にはなくても良い気がしてきている)「カタカナ辞書」にチェックを入れてアップデート
  5. skkuser.txt をユーザ辞書フォルダに入れて「辞書の更新」
  6. 「設定>詳細」を次のように編集して上書き保存。(設定名がころころ変わるので、注意)
    • 配列 → 0 (英語キーボード)
    • 区切 → 1 (コロン、セミコロンの全角入力,なくてもいいかな…)
    • 句点 → 2 (ピリオド)
    • 読点 → 2 (カンマ)
    • 改行 → 1 (Enter入力で決定+改行)
    • 疑似 → 1 (入力モードをカーソルの色で表示する機能をエミュレート)
    • cy → ち
  7. 「コマンド」からコマンドプロンプトを上げて、> rule r
  8. puttyとかでサーバーサイドに uim-fep+uim-skk とか準備している場合,ローカルのskk-fepを殺さないといけなので,> rule putty.exe m5
  9. 「閉じる」で完了だが、IME 全部置き換えるためにログオフ→ログオンを推奨。

WinPcap で起動時に自動オンしない場合のサービスオンオフ

まぁ内容は、ここに載ってることそのまんま。
WinPcapのインストール時に聞かれる「Automatically start the WinPcap driver at boot time」で困った場合の対処法 - Eiji James Yoshidaの記録
Wireshark に必須の WinPcap を、常に起動する設定にしなかったら、なかなか起動できないよって話。
サービスの起動ショートカットくらい、スタートメニューに作っとけよ。

で、ショートカットの作り方。

  • C:\Windows\System32\cmd.exe へのショートカットを作る。
  • ショートカットのプロパティから、リンク先を「C:\Windows\System32\cmd.exe /K "net start npf"」とする。
  • 同じダイアログの詳細設定ボタンから、管理者として実行、にチェックをつける。
  • ショートカット自体の名前を net start npf とかにする。

net stop npf も同様にどうぞ。

Thunderbirdの設定とかアドオンとか

まだメモなので、そのうちまとめる。

メッセージペインをプレーンテキスト表示にする
Alt+ V, B, P
メッセージペインの引用符を「>」にする
オプション > 設定エディタ > mail.quoted_graphical を false にする
(複数のアドレスを利用している時)特定アドレス宛てのメールをML配送でもBcc配送でも振り分ける
メッセージフィルタで「カスタムヘッダ」を選択 > Delivered-to を追加 > ルール設定のダイアログで改めて条件を選択しようとすると、Delivered-to が追加されているので、それを選択して条件を設定する。

WinSCP を使って Win から Linux サーバのバックアップ

前提:

  • Linux サーバを多重化したり RAID を組む予算がないために,シングル構成をとらざるを得ない.
  • Win マシン上には大事なデータがあるので多重化している.
  • Linux サーバには,SSH 公開鍵を使った入力レスの SSH セッションが疎通.
  • Win マシン上には WinSCP 導入済.

準備1 Linux サーバ

バックアップしたいパスを決定し,アーカイブを自動化.
例)cron 利用

# crontab -l
0 10 * * * rm /bkup/var.cache.bind.zip;zip -P `cat ZIPPWDFILE` -rq /bkup/var.cache.bind.zip /var/cache/bind
0 40 * * * mysqldump -u MYSQLUSER -p`cat MYSQLPWDFILE` --opt DBNAME --net_buffer_length=8000 | gzip > /bkup/mysql.sql.gz

準備2 Winマシン

  • WinSCP で動作させるスクリプトの作成.
    例)ファイル名「backup_script」とする.

    open PAMUSER@host.domain -privatekey="c:\PATH\.ssh\id_rsa.ppk"
    cd /bkup
    lcd c:\STORAGEPATH
    get var.cache.bind.zip mysql.sql.gz .\
    exit
    
  • WinSCP を呼ぶスクリプトの作成.
    例)ファイル名「backup.bat」とする.

    c:\PATH\winscp437\winscp.com /script=c:\PATH\backup_script
    

実施

  • backup.bat を実行する.

追記(Feb 13 2013)
info-zip の場合, –f オプションで差分だけ上書きできるよ!(新規ファイルの追加はなし)
更新(上書き+新規追加)したい時は,–u オプションでいいよ!
消えたファイルはアーカイブからも消したい時は,–FS オプションでいいよ!
–x オプションで除外できるよ!
除外リストでワイルドカードを使う時は,\ でエスケープしないといけないよ!