Monday, September 9, 2013

GoogleChromeのアドオンに入っていた画像ポップアップのadsを消す

適当なWEBサイトのソースコードを読んでいたところ、そのサイトとは無関係そうなスクリプトを読みに行っていて、しかも知らないタグが使われていたので調べてみました。

<script type="text/javascript" src="http://www.superfish.com/ws/sf_main.jsp?..(略)..></script>
<iframe> 略 </iframe>
<sfmsg id="sfMsgId" data="{"imageCount":0,"ip":"1.1.1.1"}"></sfmsg>

その結果、これはアドオンとともにブラウザに入り、適当な状況下でポップアップ画像を表示するらしいということがわかりました。
その状況に至ってないので詳しくは知りませんが、たとえばAmazonなどを閲覧しているときに他の商品の画像を見せてくるなどです。

これを消すべくChromeの設定からアドオンを調べてみると『Translate selection 1.4』が原因でした。
このアドオンの設定をよく見ると、チェックボックスとともに『I don't want to support you (turn off the ads).』という一文があります。 チェックを入れると上のコードは消えました。 その他、これと同様のスクリプトが自動で(?)埋め込まれるChromeアドオンには『Read Later Fast』があるそうです。

Sunday, March 10, 2013

MySQL:データベースのリストア


mysqldumpで取っておいたデータ(backupfile.sql)をデータベースにリストアしました。
データベースの一部をリストアなので、まずデータベースを作ってその後リストアします。

$mysql -u kinoko -p
Enter password:

mysql> create database kinokoDB;
Query OK, 1 row affected
mysql> exit;


$mysqldump -u kinoko -p KDB < backupfile.sql

失敗するので調べてみるとリストアはmysqldumpではなくmysqlを使うとのこと。

$mysql -u kinoko -p KDB < backupfile.sql

でリストアは成功。

日本語が化けているような気がするので文字コードセットを確認すると、

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)


#characer_set_clientはクライアントが送信する文字コード。
#character_set_resultsはサーバが送信する文字コード。


character_set_serverがlatin1なのでutf8に変更します。が、my.cnfに変更を加えて再起動したものの起動せず。。

$vi /etc/my.cnf
[client]
default-character-set = utf8

[mysqld]
default-character-set = utf8
default-set-server = utf8

$ mysqld_safe --user=root &

エラーログを見てみると、

$less /var/log/mysql/XXXX.err
130310 18:32:11 [ERROR] /usr/sbin/mysqld: unknown variable 'default-character-set=utf8'
130310 18:32:11 [ERROR] Aborting

※mysqld_safeの起動時にも、my.cnfにもエラーログファイル名を指定していないため、XXXXはマシン名になってます。


unknown variable?
調べるとdefault-character-setはMySQL5.5からは使えないらしく、代わりに、character-set-serverを使うとのこと。

$vi /etc/my.cnf
[mysqld]
character-ser-server=utf8

書き替えたら無事に起動したので文字コードを確認すると、

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
  
全部utf8になりました。

cygwinコンソールの色変更


あまりにコンソールが見づらいので色を変更しました。

リポジトリの保存ディレクトリを作成してgitからダウンロード。

$mkdir ~/git/
$git clone https://github.com/mavnn/mintty-colors-solarized.git

このsol.lightを.bashrcで読むようにする(全部残しているけどsol.lightだけあればOK)

$cd mintty-colors-solarized
$echo mintty-colors-solarized/sol.light >>txt
echo "source ~/$(cat txt) " >> ~/.bashrc

.bashrcを読み直して適用
$source ~/.bashrc

MySQL:インストール後のユーザー作成

散々はまりましたが、順を追って整理するとこの手続きになりました。


ユーザー作成

mysqld_safeを起動した後、ユーザーを作ります。
ユーザー名:test、パスワードabcにします。

$mysql -u root
mysql> grant all privileges on *.* to test@localhost identified by 'abc'


このユーザーを使ってmysqlを使うときは、

$mysql -u test -pabc

または

$mysql -u test -p
Enter password:

でパスワード入力します。

ちなみに-pとabcの間にスペースが入るとabcはdatabaseと見なされます。

$ mysql -u test -p abc
Enter password:
ERROR 1049 (42000): Unknown database 'abc'


また、grant で権限を与える時、ユーザー名がtestだからと
mysql> grant all privileges on *.* to test identified by 'abc'

のように@localhostを書かずに済ますと、
$ mysql -u test -pabc
ERROR 1045 (28000): Access denied for user 'test'@'localhost' (using password: YES)

というエラーが出ます。


rootのパスワード設定

rootのパスワードの設定方法は2つあって、

$mysqladmin -u root password PASSWORD

もしくは、mysqlのプロンプトで

mysql>set password for root@localhost=PASSWORD('パスワード');

です。


とてもわかりやすくて助かりました。


ユーザーの削除


ユーザーはmysqlデータベースのuserテーブルで管理されているので、削除する時は

mysql> use mysql;
mysql> delete from user where user='test'

のように普通に行を削除します。




MySQL:Cygwinにインストール

CygwinでMySQLを使えるよう、インストールしました。いろいろ試して、結局不成功でした。できました。(TRY1の追記)

バージョンは、

$ mysqld --version
mysqld  Ver 5.5.28-log for CYGWIN on i686 (Source distribution)


TRY1:setup.exeを使ってインストール 


setup.exeを使うとインストールは問題なく完了しますが、起動時に問題が。

■mysql のdataディレクトリの設定
データ保存ディレクトリを/e/work/lib/mysql_dataに。

$cd /usr/bin
$vi  ./mysq_install_db
ldatadir="/e/work/lib/mysql_data"

■mysql_dbのセットアップ
$ ./mysql_install_db

これは成功。設定ファイルをコピー。

$ cp my-medium.cnf /etc/my.cnf

この先で問題が。mysql用のユーザーを作成したものの、
$ net user kinoko /add /fullname:kinoko /comment:'mysql user account' /homedir:"$(cygpath -w /home/kinoko)"

このユーザーを使って
$ ./mysqld_safe --user=kinoko &

を実行するとエラー。
(実行時にデータ保存先やエラーログファイルを指定したければ、--datadir=/usr/local/mysql/data --log-error=/var/log/mysql.log & というようなオプションをつけます。

エラー内容は、(抜粋)
chown: invalid user: `kinoko'

見ると/etc/passwdにkinokoが追加されておらず。Windowsを再起動してログイン画面を見るとkinokoさんが増えているので、Windowsにとってはユーザが存在しているようす。

adduserを使おうと考えましたがCygwinにはないようなので、いろいろ試しましたが結局うまくいかず断念です。

・CygwinはLinuxと違いrootユーザーがいない
・adduser(useradd)がないのでunixライクにユーザーの追加ができない。
・net user を使うと追加できているが、/etc/passwdに反映されない。

※追記:
調べてみるとWindowsのユーザーをcygwinのユーザーに追加する方法がありました。

$mkpasswd -l -u USERNAME >> /etc/passwd

試してみました。

$mkpasswd -l -i kinoko >>/etc/passwd
$mysqld_safe --user=kinoko &

(略)

$ mysqlshow.exe -u kinoko

+--------------------+
|     Databases         |
+--------------------+
| information_schema |
| test                       |
+--------------------+

成功です・・!


TRY2: Windows版インストーラを使ってインストール


install_dirとdata_dirを変更するとエラーになりました。
エラーログは、
1: Folder: E:\work\mysql_data\
1: Folder: E:\work\mysql_data\data\
1: The installer has insufficient privileges to access this directory: E:\work\mysql_data\data. The installation cannot continue. Log on as administrator or contact your system administrator.

これを手がかりに探すと似た古いログがありましたが、(2005年)
【mysqlをインストールしたディレクトリとdata_dirのドライブが違う場合、アップデートの際にこのエラーが発生する】
ということだし、install_dirとdata_dirは同じドライブなので該当しません。

insufficient privilegesということで、パーミッションのせいかと思い777に変更してみたものの、
1: Failed to set security descriptor on object E:\work\mysql_data\, system error: -2147024891

というエラー。

結局、試しに2つのディレクトリ指定をデフォルトでやってみるとインストール成功。
ただ、デフォルトのCドライブは残り容量がないので、

$ df -h
C:               40G   40G  426M  99% /c

アンインストールしました。

TRY:3 ソースからインストール


Download MySQL Community ServerからSourceCodeをDL.

GCCのバージョンが低かったのでDL。

2.10 Installing MySQL from source を読むとインストール後の話がかいてあり、
mySQL Source Configuration Options を参考にcmake。

install_dir = /e/mysql
data_dir = /e/mysql_data
として、紆余曲折のすえ、

$ cmake . -DCMAKE_INSTALL_PREFIX=/e/mysql -DMYSQL_DATADIR=/e/mysql_data -DDEFAULT_CHARSET=utf8 2>>stderr.log 1>>stdout.log


$ cat stderr.log
/usr/bin/getconf: Unrecognized variable `LEVEL1_DCACHE_LINESIZE'
Warning: Bison executable not found in PATH
CMake Error at unittest/gunit/CMakeLists.txt:170 (ADD_LIBRARY):
  Cannot find source file:

    /e/Software/mysql/mysql-5.6.10/source_downloads/gmock-1.6.0/src/gmock-all.cc

  Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
  .hxx .in .txx
というエラーににたどり着いたものの、
最初の
/usr/bin/getconf: Unrecognized variable `LEVEL1_DCACHE_LINESIZE'
を調べてみると、

$strings /usr/bin/getconf |grep -i LEVEL1_DCHACHE_LINESIZE
$

該当なしでした。
getconfを探そうとしたところ、cygwinパッケージにはないという話があり、パッケージリストにもないので、最初から入っているのは何なんだろ・・?と思いながらこのへんで終了することにしました。

Saturday, February 23, 2013

inspiron1520 のwireless driverをいれなおす


都合でノートPC(inspiron1520)にBuffaloのエアナビゲータをインストールしたところ、今まで使っていたインテルPROSet/WirelessでBuffaloのアクセスポイントair-stationにワイヤレス接続できなくなってしまいました。
エラーメッセージは、
「プロファイルの適用に問題があります」。

エアナビゲータを使うつもりはないので元に戻そうとアンインストールしてみたものの、エラーが消えず接続できません。

エアナビゲータのダウンロードページをよく読んでみたところ、『このソフトをインストールするとXP標準のワイヤレス管理ソフトは使えなくなります』と赤字で書いてありました。
しまった・・・と思ってもあとの祭り。ドライバを入れなおします。

まず今のドライバを削除します。

「スタート>接続>全ての接続を表示>ワイヤレスネットワーク接続」

で目的の接続を表示し、

「構成>ドライバを削除」。

次に新しいドライバを入れなおします。
DELLのInsprion1520のサポートページでサービスタグを入力し、Wireless用のDell-Driverをダウンロードします。

うまくつながりました。
#最初、Dell-Driverと間違えてDell-Utilityの方を入れ、なかなかつながらないと悩んでました。

Wednesday, September 29, 2010

twitterのbotを作ってみる(Easybotter)

Easybotter(ver.2.0beta版)のDL


EasybotterをDL。サーバの時刻を合わせることが動かす時のかなりのポイント。後述。正しくないとInvalid nonceとかいうエラーが出て、このエラーコードはソースに載っていないので結構はまる。


setting.phpの区切りを改行からコンマへ変更。OAuth認証に必要な暗号?はEasybotter公式から取得。※あとで変更する予定。


本体を置くサーバの時刻を修正


時刻合わせ用にntpdateをインストール。


#aptitude ntpdate


時刻を合わせる。


#ntpdate ntp.nice.jp


cronジョブに登録


cronジョブに登録しようとしたがphpのバイナリがなかったのでインストール。


#aptitude install php5-cli


これで/usr/bin/phpというバイナリができた。登録してみて「今すぐ実行」。すると、OAuthのinclude関係でエラー。インクルードされてない場所にあるのが問題とのこと。そこで、PEAR以下をアーカイブして、


#tar cvf PEAR..tar PEAR/*


インクルードされている/usr/share/pear以下にコピーする。


#mv PEAR.tar usr/share/


#tar xvf PEAR.tar


#mv PEAR pear


これで動いた。手動実行の時のために、元々Easybotterに入っていたものも削除せずそのまま置いておく。消してみたらエラーが出た。bot.phpなどその他のファルが置いてある場所にPEARがないと実行できないみたい。


参考:


Easybotter非公式Wiki


http://www26.atwiki.jp/easybotter_wiki/pages/1.html

Sunday, September 19, 2010

webminを使ってcron作業を登録

webminを使ってcron作業を登録するとき、コマンド、コマンドの引数、の欄にそれぞれ入力すると、コマンドとコマンドの引数の間に%が入ってしまい不備になる。これを解決するには、コマンド欄にすべて記入するか、または


#crontab -e


で編集する。


実際のcrontabの設定ファイルは以下にある。USERNAMEはユーザー名。


/var/spool/cron/crontabs/USERNAME

Sunday, July 4, 2010

php5+mysql4のインストール

インストール順序があるらしい・・のか、php5を最初にインストールしようとしたら、解決できないものが多くて何度やっても入らなかった。

  1. mysql4
  2. apache2
  3. php5

の順序でインストールしたらうまくいった。

  1. #aptitude install mysql-server
  2. #apaitude install apahce2
  3. #aptitude install php5

sources.listにはjaistを設定して、特に躓くこともなくインストール完了。sslを使うときは更にopensslをインストールする。

#aptitude install oepnssl

apache2の設定と起動

編集するファイルは、/etc/apache2/以下で、

  • site-avairable/default
  • site-avairable/ssl (copy from default-ssl)

/etc/apache2/site-avairalbe/default を編集。ちなみに似たような名前のsite-enabledはavarirableのシンボリックリンクになっている。
編集内容はwwwのディレクトリの変更とcgi-binディレクトリ変更など。

<VirtualHost *:80>
        ServerAdmin MAILADDRESS ←★
        DocumentRoot /mnt/share/www/  ←★
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /mnt/share/www/>  ←★
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /mnt/share/www/cgi-bin/  ←★
        <Directory "/mnt/share/www/cgi-bin">  ←★
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

#    Alias /doc/ "/usr/share/doc/"    ←★ここから</Directory>までコメントアウト
#    <Directory "/usr/share/doc/">
#        Options Indexes MultiViews FollowSymLinks
#        AllowOverride None
#        Order deny,allow
#        Deny from all
#        Allow from 127.0.0.0/255.0.0.0 ::1/128
#    </Directory>

Option Indexes を設定すると、そのディレクトリにアクセスした時ファイル一覧が見える。sslも使いたいので

#cp default-ssl ssl

としてオリジナルを残してからsslを編集。

sslのモジュールを有効にして、

#a2enmod ssl

これのみだと以下のようなエラーが出る。

SSL received a record that exceeded the maximum permissible length.

(エラーコード: ssl_error_rx_record_too_long)

sslの設定も有効にして、apache2を再起動。

#apache2ctl restart

個人で使う以外の運用は考えていないので証明書は設定しない。

php5の設定

場所は/etc/php5/apache2/php.ini 。文字コードの設定などを行う。特に何もしなくても実行出来るので割愛。

必要ならapacheでphpモジュールを有効にする。

#a2enmod php5

通常はこれだけで、phtml,phpという拡張子のファイルからphpが実行できる。(.htmlでは実行できない)

cgiと同じく実行ディレクトリを制限したい場合は、CGI版を使うらしい。(参考:aki-web PHP質問用BBS

(次のテストスクリプトを実行できず、必要であれば拡張子PHPのファイルをPHPだと認識させるため、site-avairable/defaultに下記追加する。

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

site-avairable/sslにはデフォルトで以下が記述されている。

<FilesMatch "\.(cgi|shtml|phtml|php)$">
               SSLOptions +StdEnvVars
       </FilesMatch>

設定を変えたらapache2を再起動。

テストスクリプトの実行

phpのスクリプトは、<?  ?>で囲んで書く。

#cat /mnt/share/www/test.php

<?

phpinfo();

?>

ブラウザでアクセスしてPHPの情報が表示されたらOK。

Hatena タグ: ,,,

【玄箱】cronのログ出力先変更

debian5.0(lenny)では、syslogdではなくrsyslogdが使われている。rsyslogd.confを編集。
  1. *.*;auth~ で始まる行にcron.noneを追加し、cron.*行をコメントアウトして有効にする
  2. /etc/init.d/rsyslog restart
#
# First some standard log files.  Log by facility.
# auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none;cron.none                -/var/log/syslog
cron.*                          /var/log/cron.log

参考:。。。わからなくなってしまった。。
Hatena タグ: ,

【玄箱】/etc,/home,/varのバックアップ

/etc, /home, /varをバックアップ。方針は
  1. /etc,/home,/varを/root/backupにコピー(rsync)
  2. コピーした/root/backup以下のファイルを一時保存ディレクトリにtarアーカイブする
  3. 作ったtarアーカイブを保存先のマシンに移動。(samba)
やることは、以前書いたLANDISKから玄箱へのデータバックアップとほとんど同じで、rsync,samba,cronを使う。今回はマシン間を移動するものがtarアーカイブというところが違う程度。
以下設定。
保存先マシン=$SERVERDIR
玄箱の一時保存ディレクトリ= $TMPDIR
tarアーカイブの名前=backup.tar.gz

以下shスクリプト。
#!/bin/sh
#cd /root/backup (rsync -acouv --stats --delete /etc /home /var ./ && tar czf /$TMPDIR/backup.tar.gz /root/backup/ && echo 'etc files bakup sccess.')||echo 'etc files backup failed.'
cd /$TMPDIR
 (mount -t cifs //$SERVERDIR/ /mnt/$SERVERDIR/ -o iocharset="utf8",credentials=/etc/samba/smb_credentials && cp /$TMPDIR/backup.tar.gz /mnt/$SERVERDIR/$DISTDIR && echo 'mount and copy succeed.')||echo 'mnt and copy failed.'
umount /mnt/$SERVERDIR/ rm /$TMPDIR/backup.tar.gz

rsyncで差分がなければ、以下の作業はすべて実行する必要がないが、rsyncの実行結果は常にファイル数などの表示なので、if文の引数にすることは出来ない。したがって、rsyncとtarアーカイブをグループ化し、mountとcpをグループ化して、残りは実行してもしなくても問題ないものだけ残した。 頻度は週1なので、もしcronのログが増えてうるさいと思えたら、その時にまた修正する。

Monday, May 24, 2010

LANDISKを玄箱にバックアップする

うちでは、IO-DATAのLANDISKに写真やデータなどを置き、自宅内の共有ディレクトリとしています。そのデータを玄箱にバックアップしたときのメモです。

やり方の方針:

  1. LANDISKの共有ディレクトリを、玄箱(debian)のディレクトリ構造にマウント
  2. rsyncを使って、マウントしたディレクトリから、玄箱のバックアップ用ディレクトリにデータをバックアップ
  3. バックアップが終わればumount
  4. 1~3の作業をcronで1週間に一度動かす

大きく4つに分かれます。まず、LANDISKはsamba(2.2らしい?)でディレクトリを公開しています。これを玄箱でマウントして、ローカルにあるディレクトリやファイルと同じように扱えるようにします。マウントせず、sshを使ってrsyncする方法もありますが、LANDISKはなるべく買ってきた時の状態のまま、hackなどせず使いたいので、マウントする方法をとります。
次に、rsyncでデータのバックアップを取ります。ここは文字化けに悩んだところです。
終わったらumountして、これを週に一度実行するようcronに書きます。

以下は具体的なやりかたです。

LANDISKの共有ディレクトリを玄箱debianのディレクトリ構造にマウント




LANDISKのホスト名を仮に、ここではLANDISK-SERVERとします。
LANDISKの共有ディレクトリ、玄箱debianのマウントポイント、バックアップディレクトリは次の通り。やることは2つ。

  1. 玄箱のマウントポイントと、バックアップ先ディレクトリを作成
  2. mountコマンドはroot権限で実行するので、玄箱側につくるディレクトリの所有者権限は、ユーザーroot、グループrootにする

LANDISK-SERVERの共有ディレクトリ
photo
music
data

玄箱(debian)側のマウントポイント(mkdirで作る。ユーザーroot、グループroot)
/mnt/LANDISK-SERVER/photo
/mnt/LANDISK-SERVER/music
/mnt/LANDISK-SERVER/data

バックアップ先のdebian側のディレクトリ(mkdirで作る。ユーザーroot、グループroot)
/mnt/backup/LANDISK-SERVER/photo
/mnt/backup/LANDISK-SERVER/music
/mnt/backup/LANDISK-SERVER/data

一方、マウントするときのsambaユーザーとパスワードは
smb_credentials
というファイルを作って保存することにする。ファイルの内容は次の2行。
#vi smb_credentials
username="USERNAME"
password="PASSWORD"

cronで実行するときのために、実行ユーザーであるrootのみ読み書き可、所有者とグループも変更する。
#chmod 600 smb_credentials
#chown root.root smb_credentials


作ったファイルを/etc/sambaに置く。(ここがふさわしいかどうかは分かりません)
#mv smb_credentials /etc/samba/


以上より、mount実行コマンド※は次のようになる。たとえば共有ディレクトリがphotoの場合。
#mount -t cifs //LANDISK-SERVER/photo /mnt/LANDISK-SERVER/photo -o
iocharset=utf8,credentials=/etc/samba/smb_credentials

(smb_credentialsファイルを使わずにマウントしたいとき:
#mount -t cifs //LANDISK-SERVERNAME/music /mnt/LANDISK-SERVERNAME/music -o
iocharset=utf8,username=****,password=*****,credentials=/etc/samba/smb_credentials


※マウントにはsmbmountを使う方法もあるが、どうしても文字化けが解消できなかったのでmount -t cifsを使う。cifsはsmbを包括したプロトコルらしく、コチラのほうがオススメだとか読んだ。文字化けが解消出来なかった話についての詳細は、この記事の続きに書いておくので、何かの役に立てばいいなと。

実際にマウントをテストしてみて、文字化けするようなら次を試す。

玄箱のsambaサーバの設定を編集 smb.conf
[global]
dos charset = CP932
unix charset = UTF8
display charset = UTF8
ロケールがちゃんと設定されているか調べる。ここではUTF8
#dpkg-reconfigure locales
ja-jpUTF8を選択。suのときの「パスワード」など日本語が表示されればOK。

ここでなぜ、mountの文字化けにsambaサーバの設定が関係するのかわからないが、今の時点で調べる必要性がなく、他にやりたいこともあるので、とりあえずこのままにしておく。

rsyncでバックアップ



次に、マウントしたディレクトリをバックアップ用ディレクトリにrsyncでバックアップするコマンド。 たとえばmusic。
#rsync --verbose --progress --recursive --times --perms --compress --delete
/mnt/LANDISK-SERVERNAME/music/ /mnt/backup/LANDISK-SERVERNAME/music/


オプション説明
verbose 転送情報を詳しく表示
progress 転送中の情報を表示
recursive ディレクトリで再帰的に実行
times タイムスタンプを維持
perms パーミッションを維持
compress 受信側に送信されるデータを圧縮する
delete 送信側に存在しない受信側にあるファイルを削除

rsyncの詳細はここを参照。
http://www.infoscience.co.jp/technical/rsync/rsync.html

ここで、バックアップ元の最後の「/」だが、これの有無で挙動が変わるので注意。
もし「/」がある場合は、musicの下にあるファイルをバックアップする。
スクリプト:
/mnt/LANDISK-SERVERNAME/music/

実行結果:
#ls /mnt/backup/LANDISK-SERVERNAME/music/
music01.mp3
music02.mp3

「/」がない場合、musicを含めてその下にあるディレクトリをバックアップする。
スクリプト:
/mnt/LANDISK-SERVERNAME/music

実行結果:
#ls /mnt/backup/LANDISK-SERVERNAME/music/
music

付け忘れに注意。楽しようと思って/LANDISK-SERVER/をいきなりマウントしようとしてみたが、これはできなかった。

cronでスケジュール化するためにスクリプトを準備する



バックアップしたいディレクトリを列挙したLANDISK-backupdir.txtを作成。
#vi ~root/LANDISK-backupdir.txt
photo
music
data
video/movie
web


スクリプトを書く。ファイル名は、LANDISK-backup。
#cd /etc/cron.monthly/
#vi LANDISK-backup

#
# LANDISK backup script
#
#!/bin/sh
SERVER="サーバの名前"
for dn in `cat ~root/$SERVER-backupdir.txt`
do
(mount -t cifs //$SERVER/$dn /mnt/$SERVER/$dn -o iocharset="utf8",credentials=/etc/samba/smb_credentials && rsync --verbose --progress --recursive --times --perms --compress --delete --iconv=. /mnt/$SERVER/$dn/ /mnt/backup/$SERVER/$dn/ && umount /mnt/$SERVER/$dn && echo 'backup success.')||echo 'backup failed!'

基本的に、マウントする、rsyncする、umountする、を繋げただけ。成功・失敗はechoで表示するようにした。

mountコマンドを実行出来るのはrootだけなので、このスクリプトはrootが実行する。
#chmod 755 LANDISK-backup

スクリプトの中で、もし、mount、rsyncコマンドを1行ずつに分けて書くと、最初のマウントの成功如何に関わらず、rsyncを実行してしまうことになる。そのため、万一マウントに失敗すれば、バックアップしたデータが全部消えてしまう。
実際、最初は1行ずつ書いていた。その上、「rsyncを使うのはバックアップ専用ユーザーがいいですよ」という記事を見かけて、backup用ユーザーを作ったはいいが、実行してみればrootじゃないのでマウントに失敗し、それなのに1行ずつ書いているのでrsyncが実行され、空っぽのディレクトリをバックアップ元だと思ったrsyncが、2日かけてバックアップしたデータを全部消してしまった。orz。

だから、上ではmountに成功したら次へすすむようにしている。
chkmount=`mount~~`のような感じに、結果の成否を変数に入れられればif文が使えてわかりやすくなっていいなと思ったが、これで代入されるのは実行結果なので使えなかった。結局このような長い1行に。

cronでスケジュール化


長々と書いてきたが、結局、作成したファイルは次の3つ。

  • /etc/samba/smb_credentials(LANDISKの共有ディレクトリを見るためのユーザー名とパスワード)
  • ~root/LANDISK-backupdir.txt(LANDISKの共有ディレクトリを列挙したもの)
  • /etc/cron.monthly/LANDISK-backup(スクリプト)

スケジュールはWebminの。「システム→予定済みCron作業」から設定。
(手動でやる場合は、/etc/crontab。*印が左から順に、「分」「時」「日」「月」「曜日」。
* * * * * [実行コマンド]
参考:http://www.server-memo.net/tips/crontab.html)

以上。

おまけ

zoundry ravenの改行

zoundry ravenはEnterキーを押すと<p>タグが入り、shift-Enterだと<br>が入る

普通に日本語を入力していると、改行で<p>が入ってしまって行間が空きすぎるなあと思ってたんだけど、<br>も入れられるんだ(!)。

コメント
最近、キーボードで日本語と英語の切り替えにいつもミスする。Escを押してしまう。Escでいろんな不都合が発生する。いっそ全部英語で書ければもっと早く書けるだろうなあ。

追記:
Shift-Enterで改行をいれたものの、publishするとpに変更されてしまう・・なんで!?

zoundry ravenにping送信先を設定

ブログエディタにzoundry raven1.0.375を使っています。
デフォルトでping送信先が設定されているのですが、海外ばっかりで使っても意味がなさそう。
そこで、いくつか追加しました。
参考にしたサイト:自堕落な日記-「マルチポスト成功なのでZoundry Ravenの小話」

具体的な作業をメモ。


  1. 設定ファイルをコピーしてオリジナルを保存する。設定ファイルの場所はデフォルトで下記。
    C:\Program Files\Zoundry Raven\system\plugins\zoundry.raven.blogapp.pubsystems/zplugin.xml


  2. 設定ファイルを開いて編集する

    <!--

    ===========================================

    WEBLOG PING SITES


    ===========================================

    --->

    <zoundry-extension point="zoundry.blogapp.pubsystems.weblogping.site">
    <id>zoundry.blogapp.pubsystems.publishers.weblogping.site.livedoor</id>
    <extension-data>
    <weblog-ping-site>
    <name>livedoor reader </name>
    <url> http://rpc.reader.livedoor.com/ping/</url>
    </weblog-ping-site>
    </extension-data>
    </zoundry-extension>

    <zoundry-extension point .....>から、</zdounrty-extension>までが1つのping送信先の設定になってます。
    たとえば、ping送信先がlivedoor readerなら、
    • <id>タグの中の最後の文字をlivedoorに変える
    • <name>タグにlivedoor reader を書く
    • <url>タグにping送信先URLを書く
    と3箇所編集すればOK。ここはidタグの中の単語は、「id」なので一つしか存在しないような名前なら何でもいい・・と思うんだけど、どうだろう。


    また、ping送信先URLはPing送信先一覧(国内) - 無料ブログを参考に、追加。

    私が追加した分を続きに全部載せておきます。このping送信先が使えるかどうかは、この記事で試すところ。

以上。

Saturday, May 22, 2010

玄箱:SSHサーバとWindowsクライアントの設定

SSHサーバの設定



まずインストールする。
#aptitude install ssh

設定ファイル
/etc/ssh/sshd_config

今回設定した箇所
  • ListenAddress  0.0.0.0 ←コメントアウト。
  • PermitRootLogin no ←ルートのログインの許可:拒否
  • AuthorizedKeysFile %h/.ssh/authorized_keys ←コメントアウト。公開鍵置き場
  • PasswordAuthentication no ←UNIXパスワードで接続:しない
  • AllowUsers ユーザー1 ユーザー2 ←ログインできるユーザーを限定。


設定についての詳細はpenguin's campus noteがわかりやすい。

サーバは以上。

SSHクライアント


WindowsXPで、WinSCPとPoderosaの2つを使う。
(Cygwinは最近起動エラーばかりで使えないので使わない方向性。)

今までファイル転送のみの用途でWinSCPを使ってきたが、
初めてコマンドラインモードを使ってみたら落ちてしまって不安になったので
Poderosaも使ってみることにします。

公開鍵、秘密鍵(OpenSSH形式)のペアをサーバ(玄箱)のssh-keygenで
作ったら、OpenSSH形式が読めるはずのPoderosaでエラーが出てなぜか
使えなかった。
そこで、Poderosaで鍵を作成してサーバに渡す方法を取ります。

クライアントの設定(Poderosa)


http://ja.poderosa.org/index.html

1)最初に鍵を準備をする。
鍵を作成。2048ビット、DSA。秘密鍵、公開鍵ともに保存。
名前は、なんでもいいです。
  • 秘密鍵:poderosa_dsa
  • 公開鍵:poderosa_dsa.pub

2)公開鍵を玄箱の~/.ssh以下にパーミッション600で保存。このパーミッションは重要。
#chmod 600 poderosa_dsa.pub

3)公開鍵の名前を変更。
#cp poderosa_dsa.pub authorized_keys

authorized_keysは、サーバに設定した名前なのでこれで確定。

次にPoderosaの設定。
設定は、ファイル→新規接続から新規telnet/SSH接続で行う。
  • 認証方法:「公開鍵」。
  • 鍵ファイル:さっき作った秘密鍵、poderosa_dsaの場所。
これでつながる。


クライアントの設定(WinSCP)



WinSCPはOpenSSH形式の鍵が読めないので、puttykeygenで読める形に変換する。

puttykeygen.exe
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

puttykeygen.exeを起動
ウィンドウが出るので、Loadボタンを押してpoderosa_dsaをロードする。
private key が生成できたら、名前を付けて保存。
WinSCPにはこの鍵を使う。

設定はセーブしておくと便利。


sshの設定は以上です!!!


おまけ:公開鍵・秘密鍵のペアの作成@玄箱



#cd ~/.ssh
#ssh-keygen -t dsa ←rsaにするとSSH1

id_dsa.pub が公開鍵なので、authorized_keysとしてコピーし、
これは~/.ssh/以下に置いておく。
#cp id_dsa.pub authorized_keys

id_dsaが秘密鍵。これをクライアントに送る。
(正確にはクライアントから玄箱にftp接続してgetする。)


おまけ:クライアントの設定(TeraTermPro SSH2には非対応!)



TTSSH日本語版
http://www.sakurachan.org/soft/teraterm-j/ttssh/

TeraTermProをインストール
環境変数TERATERM_EXTENSIONSを1にセット
「マイコンピュータ」を右クリック→プロパティ→詳細設定→環境変数

TTSSHの日本語版をDL、TeraTermProをインストールしたディレクトリに中身をコピー。

玄箱:proftpdのインストールと設定(sshを使うための準備)

sshを使うなら、鍵交換しないといけないので、ファイル転送できる手段を入れる。

proftpdとftpクライアントをインストール


# aptitude install proftpd ←サーバ
# aptitude install ftp ←クライアント

proftpdの起動はinetd経由を選択。(ined経由は要求があったら起動し、standaloneだと常駐する。)
インストールが終われば設定する。

#vi /etc/proftpd/proftpd.conf
servername "<SERVERNAME> "

/etc/hostsに書いている玄箱のサーバ名がここの<SERVERNAME>と
異なる場合、
421 servive not avairable, remote server has closed connection
などのエラーが出てproftpdが起動しないので注意。


もし、起動をinetd経由からstandalone動作に変更したいときは、
下の2つの設定ファイルを変更。
★/etc/inetd.conf
ftp stream nowait root /usr/sbin/proftpd proftpd ←standaloneの場合
#ftp stream nowait root /usr/sbin/tcpd /usr/sbin/proftpd ←inetd経由の場合

★/etc/proftpd/proftpd.conf
servertype standalone
#servertype inetd


proftpdの動作を試す。
# ftp localhost

動いたあああ!!!

マメ知識

  • proftpdの設定にwebminを使うときはstandaloneにする



コメント
/etc/hostsで引っかかったが、書いてみたらこれだけ。数行。実際と違ってあっさり終わったように見える・・。

Thursday, May 20, 2010

ユーザー車検のやり方まとめ@千葉

ユーザー車検(継続検査)のまとめです。自分が2年後にこれを見て、また行けるようにするのが目的なので、事務的なことを中心に書いてます。


準備

ユーザー車検の流れを理解するには、自動車検査・登録ガイドを読む。


必要書類


自動車検査法人HPの提出書類に画像入り説明がある。
  • 自動車検査証 (車検証)
  • 点検整備記録簿 (自作可。車検場窓口で買うと30円。整備を業者に頼んだ場合は作成してもらう。車と車検の案内センターさんでも配布してくれている。)
  • 自賠責保険証明書  (車検場近くの代書屋さんでも作ってもらえる。)
  • 自動車税納税証明書 (郵送で納税通知書が来ているはず。その右端が証明書。)
  • (自動車検査登録)印紙、(自動車審査)証紙 ★
  • 継続検査申請書 ★
  • 申請書★

★印は、車検場窓口で購入する。必要なら点検整備記録簿も購入できる。(今回は、前回余分に購入していた分を使ったので買っていない。)
自賠責保険証明書は、車検場近くの代書屋さんで作ってもらった。


費用


以下、保険料などの費用。
自動車税(排気量etc.により異なります)

45,000円
自賠責保険証明書(自家用乗用自動車の24ヶ月契約)

22,470円
自動車検査登録印紙 400円
審査証紙 1,400円
重量税印紙(車の重さ1000kg強の場合です)
 
30,000円
合計 99,270円

追加として、予備検で光軸を直してもらうのに1500円かかった。


車検場を調べて予約する

自分が行く車検場を調べるには全国運輸支局のご案内 。電話番号も確実。


検査予約をする

以前は電話で予約していたが、現在はインターネット予約のみ。
自動車検査予約システムにてアカウントを取得して予約します。(2回目以降はそのアカウントで申し込む)
ラウンドという名の検査時間帯を1~4で選ぶ。車検場によって時間帯は違うかもしれない。
  1. 08:45~10:15
  2. 10:15~11:45
  3. 13:00~14:45
  4. 14:15~16:00
予約時に入力するのは車検証を参考に、・自動車登録番号(ナンバー)、・原動機の型式、・車台番号の下4桁の3つ。
ユーザー車検に不慣れとか、あまり自信がない場合は1の朝一か、3の午後一を選ぶといい。


車検へ行く

準備した書類と印鑑を持って車でGO。筆記用具もあると便利。


受付する

必要書類は手渡しすることになっている。間違っていたらその場でぱぱっと直せるのでボールペンと鉛筆を持参するといい。


ラインに入る

省略。係員さんに発炎筒の場所を尋ねられた。
ラインに入る前、ヘッドライト(光軸)をロービームであわせている場合は係員さんに申請するか、「すれ違い」のボタンがあれば押しておくこと。
ちなみにうちの車はローで合わせた。
「40kmにあわせて安定したらパッシング」という項目では、焦ってなかなか合わなかった。


車検証をもらう

無事に終了すれば窓口に書類一式を持って行く。正方形の車検通過シールをもらい車に貼って終了。


通過しなかった場合

どこかに不備があって通過しなかった場合、1日3回までなら初回手数料のみで受けられる。近くの予備検は車検場の人が知ってることが多いので、万一だめだったら尋ねてみるか、事前に調べておくといい。

以上です。

Google Analyticsをブログに貼る方法(1行)

Google Analyticsから提供されたコードをガジェットHTMLにコピー&ペースト。

玄箱HGにDebian5.0(lenny)をインストール

内容:インストール開始から完了まで。

先日初期化した玄箱HGに再びあの手間をかけてdebianを入れるのか、いっそ玄箱の初期MontavistaLinuxでやっていこうかと逡巡していたところ、手っ取り早くlennyをインストールする準備をしてくれているサイトがあったので、こちらを参考にインストール。

参考:玄箱に Debian 5.0 (lenny) をインストールする
具体的な手順を以下にメモ。
  1. 玄箱をセットアップ(kroq101.zip 公式サイトのファームと同じ)
  2. telnetでログイン。(user:root,pass:kuroadmin)
  3. EMモードに移行して再起動
    1. #echo -n 'NGNG' > /dev/fl3
    2. #reboot
  4. telnetでログイン(user:root, pass:kuroadmin)
  5. パーティションをスライス 
    1. # mfdisk -c /dev/hda 
パーテイションは以下。
  • /dev/hda1 2 GB ブート用
  • /dev/hda2 256 MB スワップ領域
  • /dev/hda3 4 GB lenny 用
  • /dev/hda4 残り全部 データ用
さらに、
  1. ファイルシステム作成。
    1. # mke2fs -j /dev/hda1
    2. # mke2fs -j /dev/hda2
    3. # mke2fs -j /dev/hda3
    4. # mke2fs -j /dev/hda4
  2. /mntをマウント
    1. # mount -t ext3 /dev/hda1 /mnt
  3. tmpimage.tgzをFTPで/mntに転送
    1. tmpimage.tgzは、玄箱セットアッププログラムのimage.zipを解凍すれば出てくる
  4. 玄箱にtelnetログインして、tmpimage.tgzを解凍
    1. #cd /mnt
    2. #tar xvfz tmpimage.tgz
  5. EMモード終了
    1. # echo -n "OKOK" > /dev/fl3
  6. 再起動
    1. #reboot
再起動すると、Montavistaが起動する。このあと、lennyインストール用に必要なファイルを全部DLしてFTPで/tmpに転送。
  1. telnetログイン
  2. # cd /tmp
  3. # tar xvfz debian-lenny-installer-kuroBOX-20090317.tgz
  4. # sh debian-lenny-installer-kuroHG.sh
  5. # reboot
(再起動前にネットワークなど書き換えても元に戻される。)

lennyが起動する。次にtelnetログイン。
  1. #telnet 192.168.0.100 ←初期のIPアドレスがこれ。(user:tmp-kun,pass:tmp-kun)
  2. suパスワード変更(初期pass:root)
    1. #su
    2. #passwd

次に/etcでネットワークとホストの設定。
  • # cd /etc
  • # vi hosts
    • ホスト名変更
  • # vi resolv.conf
    • search
    • nameserver 192.168.0.1
  • # vi hosts.allow
    • ALL:127.0.0.1
    • ALL:192.168.0.0/255.255.255.0
  • #vi network/interfaces
    • address 192.168.0.5
    • network 192.168.0.0
    • netmask 255.255.255.0
    • broadcast 192.168.0.5
    • gateway 192.168.0.1
rebootして無事にログインできた。インストール完了。
以前に比べるとかなり早くインストールできた・・・。も、もう二度とインストールしたくない。。ていうか、間違って起動しない状態にはなりたくない。