2014/06/14

データバックアップ⇒データ移行⇒HDD交換⇒LVM領域拡張

ファイルサーバの空き容量が5GBを割ってしまったので、やむなく交換。
もともと格安のNECサーバに付いていた180GBのSATAⅡをそのまま使っていたが、
500GBに交換することにした。
dumpとrestoreが良いようだが、イマイチ操作が良くわからないので、

ddコマンドと、LVMの拡張で何とかした。

まずは、ddコマンドを実行するため、KNOPPIX
(LIVEでターミナルでddコマンドが動くなら何でもいい)のDVDを作成し、
BIOS弄って、DVD優先起動にする。

$ sudo -s でroot化
コピー元を sda コピー先を sdbとする場合、
# dd if=/dev/sda of=/dev/sdb bs=1024
今回は、HDDにエラーが出た状態ではないので、
ブロックサイズはデフォルトの512Kごと送るよりは、倍の方が早いだろうということで、
オプションを追加。
ifとofを逆にしちゃうと、大変な事態に。もう二度とデータは帰ってこない・・・。
この作業、あんまりしたくない・・・。

結果、およそ2時間ほどでコピー完了
途中経過を確認する方法は別のターミナルを起動して
$ killall -USR1 dd
これで、その時点の作業量からおよその時間が割り出せる。

完了したら、シャットダウンして、その後HDDをつなぎかえて起動。

起動すると、外側は500GBなっているが、内側は180GBのままなので、
これを正しく直してあげる必要がある。

$ su -
# df -H
Filesystem             Size   Used  Avail Use% マウント位置
/dev/mapper/VolGroup00-LogVol00
                       168G   164G     4G  97% /
/dev/sda1              104M    64M    35M  65% /boot





現状、こんな感じ



ボリュームグループの構成を見て、割り当てられる領域を確認。
# /usr/sbin/vgdisplay -v
作業中に保存し忘れた・・・。
これは、最終形だが、
Total PEが上限値なので、その付近まで、領域を拡張すれば良い。

    Finding all volume groups
    Finding volume group "VolGroup00"
  --- Volume group ---
  VG Name               VolGroup00
  System ID           
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               168 GB
  PE Size               32.00 MB
  Total PE              14901
  Alloc PE / Size       14563 / 455.09 GB
  Free  PE / Size       338 / 10.56 GB
  VG UUID               Ys3H7T-UY61-MnKG-Ue0I-bMGI-mRHd-1oYDvm



# lvextend -l 14500 /dev/VolGroup00/LogVol00 

最初は、14500でなく、14901でコマンドを叩いたのだが、
他に使われている領域が有るらしく、エラーが出たので、
わりと近めのきれいな数値でコマンド実行した。

その結果が、上の状態。




# resize2fs /dev/VolGroup00/LogVol00
resize2fsでサイズを変更。










途中迷走し、fdiskで一端sda2を消して、Wで保存する前に、
再度、目一杯の領域でsda2を作り直してWして、
再起動したが、効果が有ったのか不明。

ほんとは、 resize2fsの前に、
#fsck -f /dev/VolGroup00/LogVol00 でディスクチェックすべきかも。
 
 
# df -H
Filesystem             Size   Used  Avail Use% マウント位置
/dev/mapper/VolGroup00-LogVol00
                       472G   164G   308G  34% /
/dev/sda1              104M    64M    35M  65% /boot

この形になれば、成功。



2014/05/05

バックアップ機のメンテナンス

過去に作っていたバックアップマシンをしばらく使っていなかったが、
メインマシンがお亡くなりになった際に、阿鼻叫喚となるので、
バックアップを現行に近づけておく。

ユーザを作る
# useradd ユーザ名

パスワード設定
# passwd ユーザ名

メイン機の環境を丸ごと圧縮取ってくる。
$ tar zcvf ユーザ名.tar.gz 

SCPで先程作ったサブマシンのユーザ配下に置き、展開

$ tar xvf ユーザ名.tar.gz

動作確認

postgreSQLが動いているか確認
$ psql データベース名
psql (8.4.7)

動いている。


Tomcatが動くか
tomcatは動くが、logにインクルードが上手くいかないと書かれている。

/home/ユーザ名/ver3/web-inf/web.xml
この中にcatalinaの定義されているものがあった・・・。

これで嵌った・・・。

iptableでポート解放して
iptable をrestartして設定反映。

tomcat起動で動いた。



2014/02/20

port解放


# nano /etc/sysconfig/iptables

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT


-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 14000 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 14000 -j ACCEPT


開けたいポートを記載する。 14000とか

ipテーブルを読み直す

# /etc/init.d/iptables restart

これで、ポート解放

複数のユーザでtomcatを動かす場合など必要だった。


2014/02/19

useraddのパスが通らない

リモートでuseraddをしたが、bash: useradd: command not found
となる。

su -
でrootにならないとpathが通らないことに気付かなかった・・・。
忘れないように残す。

OSのbit確認

$ uname -m
32bitの場合 i686
64bitの場合 x86_64
 
64bitのマシンから環境一式をコピーしたが、
移転先のOSが32bitだった・・・。 
JDKが64bitで tomcatが動いていたので、
32bitのJDKを入れないと、tomcatが動かない・・・。
startup.shでcannot execute binary fileのエラーが出ていた。
最初原因が分からなかったが、
OSが32bitだったような気がして調べたので、
コマンド載せておく。 

圧縮・解凍

圧縮
$ tar zcvf ファイル名.tar.gz 

解凍
$ tar xvf ファイル名.tar.gz

2014/02/01

Linux rsyncで差分バックアップの実装

基本的な使い方
 $ rsync -av /コピー元 /コピー先
フルパスで行けた。

差分バックアップについては、
rsync -av --delete --link-dest=../<<比較元>> <<バックアップ元>> /<<バックアップ先>>
で行ける。(比較元のパスはバックアップ先から相対パスで指定すること

cronで毎日稼働させるようであれば、次のように修正して稼働させればよい。
既に先人が偉大な資料を残してくれているので、参考に作成した。


--link-dest コマンド:インクリメンタルバックアップ
ハードリンクを作ってくれるので、ディスク圧迫を防げるので、コマンド採用している。

Webエンジニア・インフラエンジニアゐくをの日常 様のほぼそのままです。

詳しくは、この方のWEBサイトを確認してください。


□□□□□□シェルスクリプトの内容ここから□□□□□□□

#!/bin/bash

# バックアップ先を指定
back_up_dir=/<<バックアップ先のディレクトリのパス>>/dailyBack
mkdir -p $back_up_dir

# バックアップログ名
backup_log=/<<ログを残すディレクトリ>>/log/rsync_backup.log
rm -f $backup_log
touch $backup_log
chmod 600 $backup_log

# エラー処理 あった方がよさそうなので、そのまま使わせて頂いた。
error_exit () {
exit 1
}

# バックアップ実行
echo "毎日のバックアップ開始" >> $backup_log
#このあたりは素敵な感じ。当初別の方法で書いたが、ゐくをさんの方法の方が分かりやすいので、パクった。
latest=`ls -t $back_up_dir | grep backup | head -1`
newly=`date +%Y%m%d`backup

mkdir $back_up_dir/$newly
rsync -av --delete --link-dest=../$latest /<<バックアップ元のディレクトリ>> $newly/$latest >>

#ここから下もそのまま利用させて頂いた。

$backup_log 2>&1
code=$?
if [ $code -ne 0 ]; then
    cat $backup_log | mail -s "BACKUP NG CODE IS $code" root
    rm -rf $back_up_dir/$newly
    error_exit
fi
echo "毎日のバックアップ完了" >> $backup_log


□□□□□□□□ここまで□□□□□□□□□

Linux ディレクトリ・ファイル容量の確認コマンド du

dfはHDD等の利用率や容量の確認コマンド

duはカレントディレクトリの容量を調べることができる。

du --オプション ファイル名やディレクトリ 


オプション
-s 引数で指定したファイルやディレクトリの総計を表示する
-h 適当なサイズで表示 K G等
-d シンボリック・リンク・ファイルは元ファイルの容量を集計する


良く使うのはこのあたり

最初に調べたいディレクトリに移ってからコマンドを打っても良い。

du -sh

大概はこれでOK。  

2014/01/21

PostgreSQL 配列関数 複数行帰ってくるクエリを一行で表示させる表現 ARRAY関数

複数のテーブルを跨いだクエリで、selectの結果が複数行で返ってくる場合、
pg_fetch_array等で、一覧表として表現したい事がある。

通常、LEFT JOIN等を行っても、複数行がそのまま表示されてしまう。
ただ内容を見る場合は、これでも良いのだが、
pg_num_rows 等で件数を合わせて管理したい場合、カウントがおかしくなってしまう。

いろいろと探したところ、配列関数でクエリを投げれるようなので、実装した際のオボエガキ。

条件

テーブル
tab1
tab2

tab1 のカラム
seqnumber
name
add



tab2 のカラム
tab2seqnumber
number こいつもユニークでこれを軸に番号を発番している。
memo



クエリ生成

select seqnumber,
( select array_to_string(ARRAY(select number||memo from tab2
where tab1.seqnumber=tab2.tab2seqnumber ), ',') ) AS
combine,name,add from tab1 where seqnumber=7777;


このような表現でOK

大枠のクエリの抽出条件の中に、
select array_to_string(ARRAY・・・, ',' )を入れ子にしているのがポイント。

たとえば、
select seqnumber,number||memo,name,add from  tab1 left join tab2 on tab1.seqnumber=tab2.tab2seqnumber where seqnumber=7777;

この場合、3行の検索結果が返ってくるとすると、
seqnumber,101memo1,102memo2,103memo3,name,add
のように
number||memo が若い順にカンマ区切りで文字列として表示される。

何気にすごく使える。

本家の解説ページ
http://www.postgresql.jp/document/8.0/html/functions-array.html

2013/12/11

ExcelでpostgreSqlに接続しsqlを利用

手順のオボエガキ

PostgreSQLのODBCドライバをインストール
 OS(32bit) Excel(32bit)
 32bitのPostgreSQLのODBCドライバをダウンロードしインストール

 OS(64bit) Excel(64bit)
 64bitのPostgreSQLのODBCドライバをダウンロードしインストール

 OS(64bit) Excel(32bit)
 32bitのPostgreSQLのODBCドライバをダウンロードしインストール
 管理者権限でコマンドプロンプトを起動
 C:\Windows\SysWOW64\odbcad32.exe を叩き起動。
 32bitのODBCドライバを追加する。 

Excelでの設定
 データTAB→その他のデータソース→データ接続ウイザード
 →ODBC DSN→PostgreSQLのデータソースを選択

 適宜SQLを編集し、指定のセルにクエリ結果を表示させる。

以上

ODBC DSNで接続環境を作らないと不安定な接続となったので、
この方法を取る事。

2013/08/02

windows7 シンボリックリンク


Linuxで運用中のプログラムをwindows7で走らせることになった。

内部構成でシンボリックリンクを使っていたので、
同じものを配置するか~、メンテナンス性悪いな~と思っていたら、
windowsVista以降は何とシンボリックリンクが使えるらしい。
これは助かるので、忘れ無いように残す。


コマンドラインでのみ作成可能なため、コマンドプロンプトを管理者権限で起動

◆ファイルのシンボリックリンクを作成
mklink <シンボリックリンクの名前> <リンク先パス>
◆ディレクトリのシンボリックリンクを作成
mklink /d <シンボリックリンクの名前> <リンク先パス>

2013/07/23

grep 指定ディレクトリ内のファイルの中に入っている単語の検索

追記あり

grep -i -r -n -e "検索したい単語"  /検索したいディレクトリ

option

-i 大文字・小文字の区別をなくす。
-r サブディレクトリ以下も再帰的に検索する。
-n パターンに一致した行のファイル内での行番号を表示する。
-e 検索条件を指定 -e "内容" のセットで使う。

その他option
-w 指定したパターンを単語として含む行を抜き出す。
-c マッチした総行数を表示
--include='*.拡張子' 指定した拡張子を含む
--exclude='*.拡張子' 指定した拡張子を除く


応用編
find | xargs grep -n [pattern]
 
入力したパターンをカレントディレクトリ以下で検索してくれる。
最初の 
grep -i -r -n -e "検索したい単語"  /検索したいディレクトリ
ほぼ同じ。


今更だけど、option -e "" を忘れて
余計な時間が掛かったので、残す。 

2013/07/05

findコマンド 3日前のファイルを舐めて消して、バックアップを取る

シェルスクリプトを作成

#!/bin/sh
#バックアップ シェルスクリプト
#バックアップフォルダ名は、YYYY-MM-DD-HHMMとする。
#例) 2012-01-01-0100
#crontabと連携し、日数を指定する
#2日分持つ
#ほんとはコピーとデリートのシェルスクリプトを分けた方がいい。


echo "File backup start at `date`"
days=2
 

# ○日前以前にアクセスされたファイルを消す。
echo "Old backup ($days days passed) delete"
find [targetFile] -atime +$days -print -exec rm -fR {} \;

# find [検索するディレクトリ] (option) 
# -atime (+/-)n 最後にアクセスされたのが
#  n日前のファイル・ディレクトリを検索(+n:n日以上、-n:n日以下)
# 今回は -mtime +$days としているので 設定日数変更可能。
# -print     検索結果の標準出力
# -fprint [file name]     検索結果を指定したファイルに書き出す
# -exec [command] {} \;     検索結果をコマンドに引き渡して実行


#ディレクトリレベルで個別設定し新規作成が必要な場合使用
#fdir="作成するディレクトリのフルパス"
#if [ ! -e $fdir ]
#then
#    echo "create backup directory $fdir"
#    mkdir $fdir
#fi

#任意のディレクトリに 2012-01-01-0100 のディレクトリを作成する。
dName=[バックアップ先のディレクトリフルパス]`date '+%Y-%m-%d-%H%M'`

echo "Copying to the BackupFile"
#バックアップ元のディレクトリを指定
#個別で指定する場合は、複数行記述する。

cp -R [バックアップ元ディレクトリフルパス] $dName

echo "DB backup end   at `date`"


2013/06/26

php WEBシステム クエリの結果に行数を反映させたい

クエリを投げて、複数行の結果がかえってくるような検索プログラムに、

htmlで表を使って表示させているが、その際にsequence numberを表示させたいと要望があったので、

一番簡単な方法を掲載。

while ($col = pg_fetch_array($rst)) {
$seq +=1;

whileが終わるまで、seqに+1づつしてくれます。

 

##PHPの内容抜粋

$body .= "<TABLE border='1'>
 <TR>
              <TH><font size=2>seq</font></TH>
              <TH><font size=2>内容</font></TH>
</TR>";

while ($col = pg_fetch_array($rst)) {
$seq +=1;
     $body .= "<TR>" .
                "<TD><font size=2>$seq</font></TD>" .
                "<TD><font size=2>$col[内容のカラム名]</font></TD>" .
                "</TR>";

 

$body .= "</TABLE>";

 

 
こんな感じで使うようですね。

2013/06/24

postgresql 他の拠点(ホスト)からのアクセスを許可する設定

postgresの

/usr/local/pgsql/data/postgresql.conf を修正

listen_addresses = '*'
コメントになっている場合は、コメントを消す(#を取る)

接続ホストの制限をしている設定ファイル
/usr/local/pgsql/data/pg_hba.conf を修正

末尾に新しい拠点(ホスト)を記載。
host    all         all         192.168.XXX.0/24       password
 
補足
サブネットマスクは忘れず記載。 
passwordで md5ベースのパスワード
md5は総当たりでやられるらしく、
SHA-2とかのほうがセキュアらしいが、
その辺はルーターで穴を塞いでいるので、
ローカルレベルのパスワード定義で十分。
 
# /etc/rc.d/init.d/postgresql restart
でpostgresqlを再起動して、設定を有効にする。
 

2013/03/21

CentOs6.0 crontab

crontab -e でcronデーモンを登録しようとしたが、上手くいかない。
rootで/var/spool/cronの直下のユーザ名ファイルに直接書き込んだ。
これでも、良いようだ。

2013/03/18

CentOS6.0以降のcrontab設定

Logwatchをrpmでインストールして 、メールを携帯飛ばして状態管理をしており、
CentOS6.0のマシンからも、メールを飛ばすようした際のオボエガキ。
CentOS6.0以降のcrontabはrootでも定義されていない。
 crontabのdailyを7時半に定義したところ、 
3時半と、指定した時間2回送られてくるようになった
All about linuxさん に解説があったので、残す。
何やら、anacron (cronie-anacron)によって、ランダム化をし、
スクリプトシェルが重なったりして実行できない等の問題を解決しているようだ。
/etc/anacrontab

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly
 
赤字の 1 (左端) が実行周期 (日時実行=1) で、
次の数字 5 は、実行開始タイミングになってから、5 分間の遅延を入れる指定
実行開始する時間帯は START_HOURS_RANGEで制御され、
3-22 とは、3時から22時までの範囲 (3:00 ≦ t < 22:00) を指定
ランダム化の幅はRANDOM_DELAY で制御され、
45 とは 0~45 分の範囲 (乱数計算の実装上、正確には 44 分まで) 
でランダムに遅延を行うことを指定している。
 
とのこと。詳しくは、manにて
起動時間帯が、3-22時の場合は、3:05~3:50に(正確には3:06となるらしい)起動することになる。
  
7時半頃飛んで来ればいいので、
START_HOURS_RANGE=7-22
変更。
これで、7時前半となる場合は、
1       5       cron.daily              nice run-parts /etc/cron.daily
 5を30とかにすれば、いいはず。

cronie-noanacronというパッケージをインストールすると、ランダム化されないそうだ。
パッケージの依存関係のため、事前に cronie-noanacron をインストールし、
その後に cronie-anacron を削除するという手順を踏む。

# yum install cronie-noanacron
..略..
Installed:
  cronie-noanacron.x86_64 0:1.4.4-7.el6
Complete!

# rpm -e cronie-anacron
 
/etc/cron.d/dailyjobsというものが生成され、こいつに、見慣れたcromtabを指定すればよい。
 
中身 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
02 4 * * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily
22 4 * * 0 root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.weekly
42 4 1 * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.monthly  

cronie-anacron パッケージを削除しないと有効化されないようにガードされているそうだ。

cron.weekly および cron.monthlyも同様。

2012/10/09

Tomcat Catalina_opts

CATALINA_OPTS の設定方法

tomcatのbinにある、catalina.batの中の

set CATALINA_OPTS=CATALINA_OPTS=
" -verbose:gc -XX:+PrintGCTimeStamps -Xms1024m -Xmx1536m -XX:NewSize=170m -XX:MaxNewSize=170m -XX:SurvivorRatio=2 -XX:PermSize=64m -XX:MaxPermSize=64m"

ここの
Xmsが初期値 -Xms1024m
Xmxが最大値 -Xmx1536m
こんな感じで書く。
他の記載はそのままで問題なく動く。

OutOfMemoryが頻出の際は、メモリを買ってここを直す。

2012/03/29

PHPの日付計算

PHPの日付の記載方法を調べていたら
参考になるところを発見したので、
貼り付けておく。

http://www.ilovex.co.jp/Division/ITD/archives/2006/03/php.html
株式会社アイロベックス様の
ITプロフェッショナル部のアーカイブより発見。


PHPで1週間前の日付の取得方法がわからなかったので、
調べたところ下記の記述が出てきました。
↓↓↓↓↓↓↓以下PHPコード↓↓↓↓↓↓↓↓↓
//今日の日付を取得(タイムスタンプ)
$date_today = mktime (0, 0, 0, date("m"), date("d"), date("y"));
//一週間前を取得
$date_oneweek = $date_today - 86400 * 7;
↑↑↑↑↑↑↑以上PHPコード↑↑↑↑↑↑↑↑↑
86400というのが一日を表しているらしいです。
その数値×7日で一週間分の数値を求め、それを本日のタイムスタンプから引くと、
一週間前の日付が取得できるといった原理です。
確かにちゃんと動くのですが、本当にこの方法しかないのか??
と思い調べたところ違う書き方もありました。
しかも、上記の記述よりも簡単に書くことができました。

↓↓↓↓↓↓↓以下PHPコード↓↓↓↓↓↓↓↓↓
echo "1日前" . date("Y/m/d",strtotime("-1 day"));
echo "1ヶ月前" . date("Y/m/d",strtotime("-1 month"));
echo "1年前" . date("Y/m/d",strtotime("-1 year"));
echo "1週間前" . date("Y/m/d",strtotime("-1 week"));
↑↑↑↑↑↑↑以上PHPコード↑↑↑↑↑↑↑↑↑
1日前,1週間前,1年前,それに加えて1週間前もこのコードで取得できます。
上記コードだと、本日から○日後の日付が取得できますが、
次のコードだと、指定日付から○日後の日付が取得できます。
↓↓↓↓↓↓↓以下PHPコード↓↓↓↓↓↓↓↓↓
echo "1日前" . date("Y/m/d",strtotime("-1 day" ,strtotime("2005/12/10")));
echo "1ヶ月前" . date("Y/m/d",strtotime("-1 month" ,strtotime("2005/12/10")));
echo "1年前" . date("Y/m/d",strtotime("-1 year",strtotime("2005/12/10")));
echo "1週間前" . date("Y/m/d",strtotime("-1 week" ,strtotime("2005/12/10")));
注意:"2005/12/10"は適当な日付です。ここに指定したい日付を記述して下さい。
↑↑↑↑↑↑↑以上PHPコード↑↑↑↑↑↑↑↑↑

また、PHPで何か発見したら報告します。

2011/09/03

DELL VOSTRO230 WOL

会社で使っているDELL VOSTRO 230 のWOLを仕込んだ。
支店に行く用事があったので、BIOSをF2で立ち上げ、
Low Power Mode [Disable]
Remote On LAN [Enable]
と変更し、セーブして終了。
XPだったので、S5で起せる様に、LANの電源管理等を変更
コントロールパネル
 システム
  ハードウェア
   デバイスマネージャ
    ネットワークアダプタ
     Broadcom NetLink
      詳細設定
       Wake Up capabilities を magic packet
      電源の管理
       このデバイスで、コンピュータのスタンバイ状態を解除できるようにする にチェック

あとは、YAMAHA RTX1200 から マジックパケット投げて起動。
administrator になって
# wol send lan1 [MACアドレス XX:XX:XX:XX:XX:XX]
で立ち上がる。

ちなみにWindows系なので、Real VNCも仕込んでおいた。
益々、新築時に固定IPアドレスが欲しくなってきた。
といっても、固定費が掛かってしまうので、検討中。