DreamHostでターミナル(putty)を使ってSSH接続する

DreamHostでターミナル(putty)を使ってSSH接続したときの覚書。

1.puttyをダウンロード&インストールする

参考サイト
-------------------------------------------

http://www.adminweb.jp/web-service/ssh/index2.html

-------------------------------------------

2.SSH接続に必要な秘密鍵と公開鍵の生成

PuTTYのインストールと同時にインストールされたPuTTYgenを起動させる。
デフォルトでSSH2-RSAになっているはずなので、そのままgenerateをクリックして生成開始。パラメータが右に伸び終わるまで画面内でマウスを適当に動かし続ける。するとランダムなデータを生成される。

Save public key(公開鍵)ボタンとSave private key(秘密鍵)ボタンを押して、それぞれ保存する(保存先はとりあえずデスクトップでいい)。

参考サイト
-------------------------------------------

http://sourceforge.jp/projects/winscp/wiki/ui_puttygen

-------------------------------------------

3.public key(公開鍵)をサーバーに置く

FFFTPでサーバーにログインしてroot「一番上、/だけの所」に「.ssh」というフォルダを作り、そこに public key を置く。public key のファイル名は「authorized_keys」(拡張子なし)に変更しておく。

4.DreamHostでSSHが使えるように設定変更

ブラウザからDreamHostにログインする。「Web Panel」の「toolbox」にある「Manage User」をクリック。そこの「Edit」から「User Type」を「Shell user」に変更する。

5.PuTTYでログインする

PuTTYを起動。Hostnameに自分が利用しているDreamHostのサーバーアドレスを入力。左の Category から「Connection」→「SSH」→「Auth」を選択。「Private key for authentication(認証用の秘密鍵)」のところから先ほど保存した private key(拡張子が ppk のもの)を選択して「Open」を押す。

これで接続されるはず。初めて接続するとき以下のメッセージが出るが「このサーバーで正しいか?」という確認なので「はい」を選択する。

PuTTY の alert
-------------------------------------------
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 6f:60:44:2c:61:7e:49:70:42:c8:99:0a:09:e3:6a:5b
If you trust this host, hit Yes to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, hit No.
If you do not trust this host, hit Cancel to abandon the
connection.
-------------------------------------------

コマンドプロンプトのような黒い画面が出て login as と表示されるので DreamHostで設定したFTP Username を入れてその後 Password を入れるとログイン完了。

ログインまでにもたもたしていると「Server unexpectedly closed network connection」とメッセージが出て切断されるので、その場合は再接続する。

「Server unexpectedly closed network connection」が出続ける場合は使っているIPアドレスが DreamHost 側でブロックされているので、DreamHost に解除依頼をする必要があるみたい。↓

-------------------------------------------
If you get this error when attempting to SSH, this can mean your IP has been blocked. Contact support and we will check to see if your IP is blocked. If so, we will be able to whitelist it. If you don't know your IP, visit
-------------------------------------------

大まかな流れの参考になったサイト
-------------------------------------------

http://www.azumatech.net/blog/2010/02/12/dreamhost%E3%81%ABssh%E6%8E%A5%E7%B6%9A/

-------------------------------------------

【UWSC】テキストファイルを作る

UWSCでテキストファイルを作るにはコマンドプロンプトを使うといい。

UWSCファイルと同じフォルダに出力する場合
---------------------------------------------
CMDSTR = "echo テキストファイルに保存する文字列>text.txt"

DOSCMD(CMDSTR,FALSE,TRUE)
---------------------------------------------
echo で標準出力(通常は画面)に出力されるものを「>(リダイレクト)」でテキストファイルに送っている。リダイレクト先に同名のファイルがあれば上書き、なければ新規作成される。

「>」の左横に半角スペースを入れるとテキスト保存する文字列にも半角スペースが入ってしまうので注意!

Cドライブに出力する場合
---------------------------------------------
CMDSTR = "echo テキストファイルに保存する文字列>C:¥text.txt"

DOSCMD(CMDSTR,FALSE,TRUE)
---------------------------------------------

テキストファイルに保存する文字列に半角スペースを含ませる場合も<#DBL>で囲む必要はなし。
---------------------------------------------
CMDSTR = "echo 半 角 ス ペ ー ス を 含 む 文 字 列>text.txt"

DOSCMD(CMDSTR,FALSE,TRUE)
---------------------------------------------

【UWSC】フォルダ内のファイル名を一括リネーム(一部削除)

任意のフォルダ内のファイルを一度にリネームするときの覚書。

リネーム前のファイル名
-------------------------------
abc_001.jpg
abc_002.jpg
abc_003.jpg
-------------------------------

リネーム後のファイル名
-------------------------------
001.jpg
002.jpg
003.jpg
-------------------------------

ようは_(アンダーバー)を含むそれより前の文字列を削除したい。
コマンドプロンプトだと、ファイルの先頭に文字列を付け足したり、拡張子の変更などは簡単に rename コマンドで出来る。けど、先頭の文字を一括削除は、少しスクリプトが複雑になるので、今回はパワーシェルを用いる。

//カレントディレクトリにあるファイルをリネームする場合
-------------------------------
ps = "Get-ChildItem * | Rename-Item -NewName { $_.Name -replace <#DBL>abc_<#DBL>, <#DBL><#DBL> }"

POWERSHELL(ps)
-------------------------------
やっていることは、まず Get-ChildItem でファイルを取得して、その結果を|(パイプ)で一つずつ Rename-Item に送っている。"$_.Name" はパイプで送られてきたファイル名を表す。"-replace" でファイル名の一部を置換。今回の例では「abc_」を空文字に置き換えている。

//ディレクトリのパスを指定してリネーム(CドライブのUsersディレクトリを指定)
-------------------------------
ps = "Get-ChildItem C:¥Users¥* | Rename-Item -NewName { $_.Name -replace <#DBL>abc_<#DBL>, <#DBL><#DBL> }"

POWERSHELL(ps)
-------------------------------

//コマンドプロンプトでやるとバッチファイルを作る必要がある
-------------------------------
for %%f in ( * ) do call :sub "%%f"
exit /b

:sub
set fname=%1
set fname=%fname:abc_=%
ren %1 %fname%
goto :EOF
-------------------------------
=の右側が置換後の文字列。

コマンドプロンプトの文字列置換の構文
-------------------------------
%[元の文字列]:[置き換え前の文字列]=[置き換え後の文字列]%
-------------------------------

なお、Get-ChildItem と Rename-Item はコマンドプロンプトでいえば dir と ren なので、それぞれ dir と ren がエイリアスとして使える。

もう少し細かな指定も出来る↓

//リネームする対象を.jpgファイルだけにすると
-------------------------------
ps = "Get-ChildItem *.jpg | Rename-Item -NewName { $_.Name -replace <#DBL>abc_<#DBL>, <#DBL><#DBL> }"

POWERSHELL(ps)
-------------------------------

//ファイル名が xyz から始まるファイルに対して xyz を789 に置換して、さらに拡張子を.jpg から .txt にする場合。
-------------------------------
Get-ChildItem xyz* | Rename-Item -NewName { ($_.Name -replace "xyz", "789") -replace "jpg", "txt" }
-------------------------------

windows7でコマンドラインからjheadコマンドを使う方法

jheadはExif(エグジフ)ファイルの情報を編集・削除するためのプログラム。

コマンドラインから使うための覚書。

1.jheadのプログラム(jhead.exe)をダウンロードする。

ダウンロード元
--------------------------------------------------

http://www.sentex.net/~mwandel/jhead/

--------------------------------------------------

このときアバストというウイルス対策ソフトを使っていてダウンロードの誤検出された。スキャンから除外する設定をして対処。

2.PATH を通す。

ダウンロードしたファイルは適当なところに置いて、そこにパスを通す。

C:\Program Files (x86) に jhead というフォルダを作ってその中にプログラムを置いたら

jhead.exe の置き場
--------------------------------------------------
C:\Program Files (x86)\jheadフォルダ
--------------------------------------------------

コマンドラインからパスを通す
--------------------------------------------------
C:\Users\○○>path C:\Program Files (x86)\jheadフォルダ
--------------------------------------------------

これで使えるようになる。

なお PATH コマンドでパスを通すやり方はコマンドプロンプトを閉じると無効になるので、頻繁に使うなら windows の環境変数に jhead のパスを追加しておくといい。

3.コマンドの一例

Exif情報を削除
--------------------------------------------------
jhead -purejpg C:¥Users¥目的のファイル.jpg
--------------------------------------------------

Exif情報を削除(すべてのjpgファイル)
--------------------------------------------------
jhead -purejpg C:¥Users¥*.jpg
--------------------------------------------------

Usersディレクトリのサブディレクトリを対象にする
--------------------------------------------------
jhead -purejpg C:¥Users¥*¥*.jpg
--------------------------------------------------

ヘルプを見る
--------------------------------------------------
jhead -h
--------------------------------------------------

ヘルプを見る(パスが通ってない場合)
--------------------------------------------------
C:\Program Files (x86)\jheadフォルダ\jhead -h
--------------------------------------------------

UWSCで「Exif情報を削除」を実行(パスを通してない場合)
--------------------------------------------------
CMDSTR = "<#DBL>C:\Program Files (x86)\jheadフォルダ\jhead<#DBL> -purejpg <#DBL>C:¥Users¥目的のファイル.jpg<#DBL>"

DOSCMD(CMDSTR,FALSE,TRUE)
--------------------------------------------------
<#DBL>がいるのはパスの途中に半角スペースがある場合のみ

UWSCでファイルの移動

UWSCで指定した場所にファイルを移動するサンプルスクリプト

指定したひとつのファイルを移動する場合
------------------------------------------------------
FROM_URL = "C:¥移動ファイル.txt" //移動させたいファイル

TO_URL = "C:¥Users¥移動先フォルダ" //移動先のフォルダ

CMDSTR = "move " + FROM_URL + " " + TO_URL

DOSCMD(CMDSTR,FALSE,TRUE) //実行
------------------------------------------------------

拡張子が同じファイルをすべて移動する場合
------------------------------------------------------
FROM_URL = "C:¥*.txt" //移動させたいファイル

TO_URL = "C:¥Users¥移動先フォルダ" //移動先のフォルダ

CMDSTR = "move " + FROM_URL + " " + TO_URL

DOSCMD(CMDSTR,FALSE,TRUE) //実行
------------------------------------------------------

UWSCで指定した場所にフォルダを作る

UWSCで指定した場所にフォルダを作るときのサンプルスクリプト

-----------------------------------------------------------
folder_name ="新しいフォルダ" //作りたいフォルダの名前

//作りたい場所を指定
Doscmd("mkdir C:¥" + folder)
-----------------------------------------------------------

//フォルダ名に半角スペースが含まれる場合は<#DBL>で囲む
-----------------------------------------------------------
folder_name ="新しいフォルダ" //作りたいフォルダの名前

//作りたい場所を指定
Doscmd("mkdir C:¥<#DBL>" + folder + "<#DBL>")
-----------------------------------------------------------

windows7でのOLE/COM Object viewのインストール方法

OLE/COM Object viewは、システムに現在インストールされている全てのオブジェクトを調べることができるツール。

2015/03現在ダウンロード場所
-----------------------------------------------------------------

http://jp.downv.com/install-OLE-COM%83I%83u%83W%83F%83N%83g%83r%83%85%81%5B%83A-10555289.htm

http://download.cnet.com/Windows-2000-Resource-Kit-Tool-OLE-COM-Object-Viewer-oleview-exe/3000-10250_4-10732958.html

-----------------------------------------------------------------

自分のwindowsでは C:\Program Files (x86)\Resource Kit にインストールされた。

oleview.exeを実行すると、システムによっては「iviewers.dllというファイルがない」というメッセージが出る。

dllのダウンロード場所
-----------------------------------------------------------------

http://download.microsoft.com/download/2/f/1/2f15a59b-6cd7-467b-8ff2-f162c3932235/ovi386.exe

古いバージョンのoleview.exeから取得することができる。デフォルトではファイルはC:\MSTOOLS\BINディレクトリにインストールされる。

https://www.microsoft.com/en-us/download/details.aspx?id=8279

Windows SDKをインストールしてもOK。

https://msdn.microsoft.com/ja-jp/windows/desktop/bg162891.aspx

Widnows8.1用だが7もOK。
-----------------------------------------------------------------

必要なのはiviewer.dllだけ。oleview.exeと同じディレクトリにコピーした後、下記のコマンドラインを実行して、dllを登録する。(コマンドラインを管理者権限で開くには、Ctrl + Shiftを押しながら起動)

--------------------------------------------------------
Regsvr32 "(iviewers.dllのパス)"
例:例: Regsvr32 "C:\Program Files (x86)\Resource Kit\iviewers.dll"
--------------------------------------------------------

参考サイト

http://open-shelf.appspot.com/AutoIt3.3.6.1j/html/intro/ComRef.htm

http://qiita.com/zakuroishikuro/items/d9530f6feb5467fc318b

【uwsc】windows media playerで動画ファイルを再生

uwscを使って、windows media playerで動画ファイルを再生するスクリプト。

windows media playerで動画ファイル(wmv)を再生
-----------------------------------------------------
exec("C:¥Program Files (x86)¥Windows Media Player¥wmplayer.exe ¥play C:¥目的のファイル.wmv")
-----------------------------------------------------
¥
オプションの解説

http://support.microsoft.com/kb/241422/ja

ファイル名に半角スペースを含む場合は<#DBL>で囲む。
-----------------------------------------------------
exec("C:¥Program Files (x86)¥Windows Media Player¥wmplayer.exe /play <#DBL>C:¥半角 スペース.wmv<#DBL>")
-----------------------------------------------------

ただ media player を起動するだけならこちらでもOK
-----------------------------------------------------
doscmd("C:¥Program Files (x86)¥Windows Media Player¥wmplayer.exe")
-----------------------------------------------------

動画ファイルを直接しているするならこちら。この場合動画ファイルが関連付けされている動画プレイヤーが起動。
-----------------------------------------------------
doscmd("C:/Users/目的のファイル.wmv")
-----------------------------------------------------

【UWSC】動画ファイルの再生時間を取得

wmvファイルなどの動画ファイルから再生時間を取得するUWSCスクリプト。
動画ファイルのプロパティの詳細タグから見える動画の長さを参照する。

UWSCスクリプト
--------------------------------------------------
//エクスプローラの詳細情報を得る
dim o_Shell = CreateOleObj("Shell.Application")
dim s_dir   = get_cur_dir

//このファイルと同じフォルダにあるものとする
dim s_fileName = "目的のファイル.wmv"

//NameSpace(名前空間)でフォルダオブジェクトを作る
dim o_folder = o_Shell.NameSpace(s_dir)

//ParseNameで指定されたアイテムの FolderItem オブジェクトを作成し返す。
//FolderItem とは、フォルダに含まれる個々のファイルやフォルダのこと。
dim o_item  = o_folder.ParseName(s_fileName)

dim i = 27 //長さを参照するための番号 XPなら21

//GetDetailsOfメソッドでフォルダ内のアイテムについて詳細を取得。
dim s_columName = o_folder.GetDetailsOf(emptyparam, i)
dim s_value   = o_folder.GetDetailsOf(o_item, i)
s = i +" : "+ s_columName +" = "+ s_value
print s

sleep(50) //表示時間
--------------------------------------------------

もっと他の詳細情報を得たい場合

--------------------------------------------------
//エクスプローラの詳細情報を得る
dim o_Shell = CreateOleObj("Shell.Application")
dim s_dir   = get_cur_dir

//このファイルと同じフォルダにあるものとする
dim s_fileName = "目的のファイル.wmv"

//NameSpace(名前空間)でフォルダオブジェクトを作る
dim o_folder = o_Shell.NameSpace(s_dir)

//ParseNameで指定されたアイテムの FolderItem オブジェクトを作成し返す。
//FolderItem とは、フォルダに含まれる個々のファイルやフォルダのこと。
dim o_item  = o_folder.ParseName(s_fileName)

dim i
for i=-1 to 50
  //GetDetailsOfメソッドでフォルダ内のアイテムについて詳細を取得。
  dim s_columName = o_folder.GetDetailsOf(emptyparam, i)
  dim s_value   = o_folder.GetDetailsOf(o_item, i)
  s = i +" : "+ s_columName +" = "+ s_value
  print s
next

sleep(50) //表示時間
--------------------------------------------------

【vbs】windows7でmp3ファイルの再生時間を取得

windows7でmp3ファイルの再生時間を取得するためのメモ

//このスクリプトをvbsファイルとして保存
--------------------------------------------------------------
'Explicit(エクスプリシット)はっきりと述べられた、明白な、の意。
'変数の宣言を強制する
Option Explicit

Dim itm

With CreateObject("Shell.Application").Namespace("C:\Users\Public\Music\Sample Music")
For Each itm In .Items

'InStr は文字列の中に指定の言葉があるか
'LCase は小文字に変換
If InStr(LCase(itm.Type), "mp3") Then
WScript.Echo itm.Name & " , 長さ:" & .GetDetailsOf(itm, 27)
'XPの場合は21
End If
Next
End With
--------------------------------------------------------------

ちなみに他の主な項目は次のとおり。

-----------------------------------------------------------------------------
WScript.Echo itm.Name & " , ファイルサイズ:" & .GetDetailsOf(itm, 1)
WScript.Echo itm.Name & " , ファイルの種類:" & .GetDetailsOf(itm, 2)
WScript.Echo itm.Name & " , 更新日時:" & .GetDetailsOf(itm, 3)
WScript.Echo itm.Name & " , 作成日時:" & .GetDetailsOf(itm, 4)
WScript.Echo itm.Name & " , アクセス日時:" & .GetDetailsOf(itm, 5)
WScript.Echo itm.Name & " , 属性:" & .GetDetailsOf(itm, 6)
WScript.Echo itm.Name & " , 所有者:" & .GetDetailsOf(itm, 10)
WScript.Echo itm.Name & " , 参加アーティスト:" & .GetDetailsOf(itm, 13)
WScript.Echo itm.Name & " , アルバム:" & .GetDetailsOf(itm, 14)
WScript.Echo itm.Name & " , 年:" & .GetDetailsOf(itm, 15)
WScript.Echo itm.Name & " , ジャンル:" & .GetDetailsOf(itm, 16)
WScript.Echo itm.Name & " , 指揮者:" & .GetDetailsOf(itm, 17)
WScript.Echo itm.Name & " , 評価:" & .GetDetailsOf(itm, 19)
WScript.Echo itm.Name & " , 参加アーティスト:" & .GetDetailsOf(itm, 20)
WScript.Echo itm.Name & " , タイトル:" & .GetDetailsOf(itm, 21)
WScript.Echo itm.Name & " , コメント:" & .GetDetailsOf(itm, 24)
WScript.Echo itm.Name & " , トラック番号:" & .GetDetailsOf(itm, 26)
WScript.Echo itm.Name & " , 長さ:" & .GetDetailsOf(itm, 27)
WScript.Echo itm.Name & " , ビット レート:" & .GetDetailsOf(itm, 28)
WScript.Echo itm.Name & " , コンピューター:" & .GetDetailsOf(itm, 53)
WScript.Echo itm.Name & " , 名前:" & .GetDetailsOf(itm, 155)
WScript.Echo itm.Name & " , フォルダーのパス:" & .GetDetailsOf(itm, 177)
WScript.Echo itm.Name & " , 項目の種類:" & .GetDetailsOf(itm, 182)
WScript.Echo itm.Name & " , エンコード方式:" & .GetDetailsOf(itm, 193)
WScript.Echo itm.Name & " , 発行元:" & .GetDetailsOf(itm, 195)
WScript.Echo itm.Name & " , サブタイトル:" & .GetDetailsOf(itm, 196)
WScript.Echo itm.Name & " , アルバムのアーティスト:" & .GetDetailsOf(itm, 217)
WScript.Echo itm.Name & " , ビート数/分:" & .GetDetailsOf(itm, 219)
WScript.Echo itm.Name & " , 作曲者:" & .GetDetailsOf(itm, 220)
WScript.Echo itm.Name & " , イニシャル キー:" & .GetDetailsOf(itm, 221)
WScript.Echo itm.Name & " , コンパイルの一部:" & .GetDetailsOf(itm, 222)
WScript.Echo itm.Name & " , 雰囲気:" & .GetDetailsOf(itm, 223)
WScript.Echo itm.Name & " , セットのパート:" & .GetDetailsOf(itm, 224)
WScript.Echo itm.Name & " , サブタイトル:" & .GetDetailsOf(itm, 254)
WScript.Echo itm.Name & " , 共有ユーザー:" & .GetDetailsOf(itm, 268)
-----------------------------------------------------------------------------