VirtualBox でホスト OS からゲスト OS に SSH 接続する三つの方法

1)ポートフォワーディングを使う。

「ポートフォワーディング」をクリック。

ルールを作成。

「root」は、ログインユーザ名。「2222」は、ルールで設定した「ホストポート」。

$ ssh -p 2222 root@localhost

2)ブリッジアダプターを使う。

「ブリッジアダプター」を選択。

ゲスト OS を起動して「ifconfig」などで IP アドレスを確認。

「root」は、ログインユーザ名。「192.168.1.4」は、ゲスト OS の IP アドレス。

$ ssh root@192.168.1.4

3)ホストオンリーアダプターを使う。

「ファイル」→「ツール」→「ネットワークマネージャー」。
「ホストオンリーネットワーク」で「作成」。

「アダプター2」で「ネットワークアダプターを有効化」にチェックして「ホストオンリーアダプター」を選択。
(「アダプター1」は「NAT」のまま)

ゲスト OS を起動して「ifconfig」などで IP アドレスを確認。

「root」は、ログインユーザ名。「192.168.56.101」は、ゲスト OS の IP アドレス。

$ ssh root@192.168.56.101

フォルダの所有権とフルコントロール権限を得る

「この操作を実行するアクセス許可が必要です。このファイルを変更するには、TrustedInstaller からアクセス許可を得る必要があります。」とメッセージが出て、フォルダ,ファイルが削除できない場合、所有権とフルコントロール権限を得て、削除できるようにする。

下記コマンドを実行。
コマンドプロンプト(管理者)または Windows PowerShell(管理者)で入力。
フォルダやファイル名にスペースが含まれている場合は引用符(")で囲む。

所有権を得るコマンド

> takeown /f 〈フォルダのパス〉 /r /d Y

オプションの意味:
/f 〈フォルダ名もしくはファイル名フルパス〉 ・・・ 対象となるフォルダ、ファイルの指定。
/r ・・・ フォルダ内のすべてのサブフォルダ、ファイルを再帰的に実行。
/d Y ・・・ 確認メッセージに対して「はい」を自動的に返してくれる。

フルコントロールを得るコマンド

> cacls 〈フォルダのパス〉¥* /T /G user:F

オプションの意味:
/T ・・・ 現在のフォルダとすべてのサブフォルダにある指定されたファイルの ACL を変更。
/G 〈ユーザー名〉:〈アクセス権〉・・・ 指定されたユーザにアクセス権を与える。Fはフルコントロール。

※対象が多いとモレ(?)が発生するようだった。一部削除できないものがあっても、とりあえず削除できるものを削除したのち、再びコマンドを実行してもう一度削除を試みたら、削除できなかったものも削除することができた。


Chrome でキャッシュを削除する

1)通常の再読み込み
「更新ボタン」または「F5キー」

2)ハード再読み込み(スーパーリロード)
「Shift+F5」

3)キャッシュの消去とハード再読み込み
「F12キー」→デベロッパーツールを表示させる。その状態で、更新ボタンを右クリック。
表示されたメニューの「キャッシュの消去とハード再読み込み」をクリック。


Google Apps Script で cron

Google Apps Script

無料のホスティングサービスには cron が使えないことが多いので重宝しています。

function myFunction() { UrlFetchApp.fetch("https://example.com/hoge.php"); }

あとは、MyDNS.JP への IP アドレス通知に利用したりしています。

function myFunction() { UrlFetchApp.fetch("https://www.mydns.jp/directip.html?MID=MasterID&PWD=Password&IPV4ADDR=IPv4Address"); }

・正常に完了できなかった場合には、失敗のエラーメールが届くので、サーバの死活確認にも利用できそうです。

自己署名の SSL 証明書を使用したサイトにアクセスすると「ScriptError: SSL Error」というエラーとなることがあります。 この場合、UrlFetchApp のオプションで「'validateHttpsCertificates' : false」を設定すると、SSL 証明書のエラーを回避できます。

var options = { 'validateHttpsCertificates' : false }; function myFunction() { UrlFetchApp.fetch("https://example.com/hoge.php", options); }

IcoMoon

IcoMoon App - Icon Font, SVG, PDF & PNG Generator

Webアイコンフォントが作成できます。

オリジナルで作成したアイコンの SVG データをアップロードするだけでフォントファイル化してくれます。
また、IcoMoon のフリーアイコンの中から好きなものを選んでフォント化することもできます。

「Import Icons」から SVG データをアップロードしたり、「Add Icon From Library…」から好きなフリーアイコンを探して選択します。(他で作成,取得した SVG は黒色にします)

右下の「Generate Font」をクリックします。

名前(sun)および数値(e900)は必要であれば編集可能です。
右下の「Download」をクリック。
ダウンロードした zip ファイルを解凍すると内容は以下のようになっています。

「demo.html」をブラウザで見ると以下のように表示されます。

名前はデフォルトで「ico-」の接頭辞が自動に付きます。

サーバへアップロードが必要なものは「style.css」と「fontsフォルダ(と中身)」だけです。
「icomoon」などと名前を付けたフォルダに入れてフォルダごとアップロードすると管理が楽だと思います。

【表示方法】
1)<head>~</head> 内で「style.css」を取り込む。

<link rel="stylesheet" href="./icomoon/style.css">
(パスは環境に合わせてください)

2)表示させたいところに以下を書く。

・「名前(icon-sun)」を使う場合。
<span class="icon-sun"></span>

表示例:

・「数値(e900)」を使う場合。
<span class="number">&#xe900;</span>

class 名は任意。数値の前に「&#x」を付加。
「数値」を使う場合は、スタイルシートで font-family を指定する必要があります。

.number {
font-family: 'icomoon';
}

表示例:

※表示例はスタイルシートでカラー等を指定しています。

IcoMoon App の場合、作成したプロジェクトやアップロードした SVG は、ブラウザキャッシュにより保持されるので、時間をおいてアクセスしても引き続き追加や編集が可能ですが、異なる環境やキャッシュがクリアされた場合でも、「selection.json」を「Import Icons」からインポートすることで、アイコンフォントの情報がそのまま使えます。


SSH用鍵を作成

・Poderosaで鍵ペア(公開鍵/秘密鍵)を作成。

僕は、Windows用のターミナルエミュレータにPoderosaを使っていて、SSH用の鍵ペアもそれで作っています。
(Poderosaには、.NET Framework 2.0 のインストールが必要です。僕は上位互換の .NET Framework 3.5 をインストールしています。)

まず、Poderosaを起動したら、メニューの「ツール」→「SSH鍵作成ウィザード」で、SSH鍵作成ウィザードを起動する。

任意のパスフレーズ(鍵によるSSHサーバへのログイン用パスワード)を「パスフレーズ」欄と「確認入力」欄に入力して「次へ」

ウィンドウの中でマウスを動かす。

「次へ」

「秘密鍵を名前をつけて保存」をクリックし、適当な名前で秘密鍵を保存する。

「OpenSSH形式で公開鍵を名前をつけて保存」をクリックし、適当な名前で公開鍵を保存する。

「完了」

・WinSCP用秘密鍵を作成。

Poderosaで作った秘密鍵はWinSCPでは使えないので新たに作ることになります。ただ、公開鍵は共用出来るのでPoderosaの秘密鍵からWinSCPの秘密鍵を作成します。

WinSCPを起動し、「ツール」→「PuTTYgenを実行」で鍵作成ツールを起動する。

・「Load」を押し、Poderosa用の秘密鍵を選択。
・Poderosaの秘密鍵用のパスワードを入力。
・「Save private key」を押し、適当な名前で保存。

・Linux機用秘密鍵を作成。

クライアントのLinuxマシンからsshコマンドを使ってリモート接続する際の秘密鍵も「Poderosa用」とも「WinSCP用」とも違うものとなりますが、やはり PuTTYgen で作成できます。

「Conversions」→「Import key」でPoderosa用の秘密鍵を取り込み、「Conversions」→「Export OpenSSH key」で作成します。(途中、Poderosaの秘密鍵用のパスワードを入力します)

SSHの秘密鍵は、「id_rsa」という名にし、「~/.ssh/id_rsa」に置けば、特に秘密鍵の場所指定をしなくても接続出来ます。
なお、秘密鍵格納ディレクトリ「~/.ssh」のパーミッションは「700」,秘密鍵「id_rsa」のパーミッションは「600」とします。

ちなみに、ssh コマンドは、

$ ssh remoteuser@remote.wave440.com

…みたいに。

また、scpコマンドを使ってファイル転送をする場合は、(ローカルリモートホスト

$ scp /home/yuu/index.html remoteuser@remote.wave440.com:/var/www/html/

…みたいに。
※ディレクトリを転送するには、-r オプションをつける。
※リモートホスト→ローカルの転送は順番を逆にする。


CGI スクリプトに関するメモ書き

①エラー内容をブラウザに表示させるようにするには、

use CGI::Carp qw(fatalsToBrowser);

と書いておく。

②jcode.pl を Jcode.pm にしたら、

require 'jcode.pl';
  ↓
use Jcode;

jcode::
  ↓
Jcode::

にすれば大方いいらしい。
んで、

&jcode'convert(*title,'jis');
は、
Jcode::convert(¥$title,'jis');

とすればいい、…みたい。

③メールの Subject を Base64 エンコードする
不完全らしいですが、とりあえず僕はコレで問題なかったので。

use Jcode;
use MIME::Base64;


Jcode::convert(¥$SUBJECT,'jis');

$SUBJECT = '=?ISO-2022-JP?B?' . encode_base64($SUBJECT, '') . '?=';

④オートリンク ( URL とメール)

$MSG = &auto_link($MSG);


sub auto_link {
   local($_) = @_;
   $_ =~ s/(https?:¥/¥/[¥w¥.¥~¥-¥/¥?¥&¥#¥+¥=¥:¥;¥@¥%]+)/<a href="$1" target="_blank">$1<¥/a>/gi;
   $_ =~ s/([¥w¥-]+¥@[¥w¥-¥.]+)/<a href="mailto:$1">$1<¥/a>/gi;
   return $_;
}


- guitar site WAVE -