2018/06/19

リモートデスクトップ接続が出来ない(windowsアップデートによる)


WindowsServer2012へリモートデスクトップ接続を行なおうとすると、

認証エラー
要求された関数はサポートされません

サーバ:192.168.0.xxx

のダイアログが表示されて接続できない。


環境
サーバ
Windows 2012R2
クライアント
windows7 Home(セキュリティパッチのみ)


2018 年 5 月の更新プログラム適用によるリモート デスクトップ接続への影響
https://blogs.technet.microsoft.com/askcorejp/2018/05/02/2018-05-rollup-credssp-rdp/

4-2. リモート デスクトップ接続元 (クライアント) での回避策
リモートデスクトップ接続元にて以下レジストリを手動もしくは REG ADD コマンドで追加いただくことでも回避策 1 と同様の効果が得られます。

レジストリ パス : HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters
値 : AllowEncryptionOracle
データの種類 : DWORD
値 : 2

REG ADD コマンドで追加いただく場合には以下のコマンド ラインとなります。
REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2

とのこと。


コマンドプロンプトを監理者権限で起動し、

REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2

を叩くと接続できた。

根本的な解決は、サーバ側に更新プログラムを適用させろ
との事なので、早めにやろう。

2018/06/04

postgresql 初期化と接続 外部からのdump

postgresqlがインストールされているか確認。
pgsql --version
psql (PostgreSQL) 9.2.18

起動テストをしてみる。
# systemctl start postgresql.service
Job for postgresql.service failed because the control process exited with error code. See "systemctl status postgresql.service" and "journalctl -xe" for details.

初期化が必要だった。
# service postgresql initdb
Hint: the preferred way to do this is now "postgresql-setup initdb"
Initializing database ... OK

動かしてみる。
# systemctl start postgresql.service
[root@localhost ~]# systemctl status postgresql.service
● postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
   Active: active (running) since 月 2018-06-04 18:54:47 JST; 12s ago
  Process: 1627 ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o -p ${PGPORT} -w -t 300 (code=exited, status=0/SUCCESS)
  Process: 1619 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 Main PID: 1630 (postgres)
   CGroup: /system.slice/postgresql.service
           tq1630 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432
           tq1631 postgres: logger process
           tq1633 postgres: checkpointer process
           tq1634 postgres: writer process
           tq1635 postgres: wal writer process
           tq1636 postgres: autovacuum launcher process
           mq1637 postgres: stats collector process

 6月 04 18:54:46 localhost.localdomain systemd[1]: Starting PostgreSQL database server...
 6月 04 18:54:47 localhost.localdomain systemd[1]: Started PostgreSQL database server.

動いた。


一旦停止して、外部からのアクセスが出来るようにする。
# nano /var/lib/pgsql/data/postgresql.conf
L60位のlisten_addressを許容
listen_addresses = '*'                  # what IP address(es) to listen on;

# nano /var/lib/pgsql/data/pg_hba.conf
末尾にIPアドレスの設定

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                trust
#host    replication     postgres        127.0.0.1/32            trust
#host    replication     postgres        ::1/128                 trust
# for server
host    all         all         192.168.xxx.0/24        password
host    all         all         192.168.xxx.0/24       password
host    all         all         192.168.xxx.0/24       password
# for vendor
host    all         all         xxx.xxx.xxx.xxx/28     password


firewallを開放
# firewall-cmd --add-service=postgresql --permanent
success
# systemctl restart firewalld.service

再度起動

恐らく問題なく接続できている。

pg_dumpで外部サーバに接続する場合は、同じユーザを作成し、ルートに .pgpass を作成
書き方は
192.168.0.XXX:5432:DB名:ユーザ名:パスワード

複数のDBがある時は、
192.168.0.xxx:5432:*:user:password でOK

$ chmod 600 .pgpass パーミッションは600指定
パーミッション600にしないと、エラーになった。

$ pg_dump -Ft -h 192.168.0.xxx -p 5432 -U user -w dbName > /home/user/dbName_`date '+%y%m%d%H%M'`

-wがパスワード請求無しのオプション
こんな感じでdump出来るので、これをシェルスクリプトにして、crontabに書いて終了。

2018/05/29

JDK8(171)とtomcatとgroupsessionのインストール CentOS7

1.Java SE Development Kit 8u171のインストール


http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
JDK10はgroupsessionが未対応なので、8の最新をダウンロード
rpmパッケージをダウンロードして、ローカルインストールする。

# yum install jdk-8u171-linux-x64.rpm
既にパッケージがインストールされているときは、最新を認識させる必要がある。
# alternatives --config java
3 プログラムがあり 'java' を提供します。
選択 コマンド
-----------------------------------------------
1 java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el7_3.x86_64/jre/bin/java)
*+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/jre/bin/java)
3 /usr/java/jdk1.8.0_171-amd64/jre/bin/java
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:

最新になっているので、問題ない。
# echo $JAVA_HOME でパスが通っているか確認。
何も出なければ、とおっていないので、在処を探す。
# readlink $(readlink $(which java))
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/jre/bin/java

設定し、反映させる
# echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/jre" >> /root/.bashrc
# source /root/.bashrc
# echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/jre

2.tomcatユーザを作成、パスワード

# useradd tomcat
# passwd tomcat

3.tomcatをインストール

http://tomcat.apache.org/
gsessionはJ2EEコンテナは6,7,8が対象なので、apache-tomcat-8.5.31.tar.gzをダウンロードし、
展開 ⇒ /usr/localへ移動 ⇒ 所有者をtomcatに ⇒ シンボリックリンクを作成
# tar xvfz apache-tomcat-8.5.31.tar.gz
# mv apache-tomcat-8.5.31 /usr/local
# cd /usr/local
# chown -R tomcat:tomcat apache-tomcat-8.5.31
# ln -s apache-tomcat-8.5.31 tomcat

4.環境変数の定義

JAVA_HOMEとCATALINA_HOMEを定義する。
CentOSの場合、/etc/profileが既にあるので、この後ろに書く。
# nano /etc/profile
末尾に
JAVA_HOME=/usr/java/default
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
を加える。

5.systemdの起動用にtomcat.serviceを作成。


# nano /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-2.b11.el7_3.x86_64/jre/
Environment=CATALINA_OPTS=-Xmx3072M -2048XmsM
ExecStart=/usr/local/apache-tomcat-8.5.31/bin/startup.sh
ExecStop=/usr/local/apache-tomcat-8.5.31/bin/shutdown.sh
ExecReStart=/usr/local/apache-tomcat-8.5.31/bin/shutdown.sh;/usr/local/apache-tomcat-8.5.31/bin/startup.sh
[Install]
WantedBy=multi-user.target

実行権限を付与
# chmod 755 /usr/lib/systemd/system/tomcat.service

ヒープメモリを
Environment=CATALINA_OPTS=-Xmx3072M -2048XmsM
で設定しないで、~/tomcat/bin/startup.shから直接起動時に反映させたい場合は、
~/tomcat/bin 配下に setenv.sh を作成して、その中に書けば良い

#!/bin/sh
JAVA_OPTS="-server -Xms2048M -Xmx3072M"
export JAVA_OPTS

これで々ように起動時にヒープメモリが設定される。

6.firewall 8080ポートの開放


# firewall-cmd --add-port=8080/tcp --permanent
success
# firewall-cmd --reload
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: em1
sources:
services: dhcpv6-client ssh
ports: 8080/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
8080が開いた。

7.起動、停止テスト

# systemctl start tomcat
停止は、
# systemctl stop tomcat
自動起動は
# systemctl enable tomcat



稼働確認


groupsessionのインストール


最新版をダウンロード
https://groupsession.jp/dl/gsession_war_4_8_1-dl1.html

から、gsession.warをダウンロード
# systemctl stop tomcat でtomcatを停止してから、
/usr/local/apache-tomcat-8.5.31/webappsにgsession.warを置く。
# systemctl start tomcat で起動。

2018/05/21

centOS7にntfsのhddをマウントさせる

ntfsドライブをマウントするためのパッケージは

fuse
fuse-ntfs-3g
dkms
dkms-fuse

# yum -y --enablerepo=epel install dkms fuse-ntfs-3g
yumでインストールするが、
epelリポジトリのパッケージをインストールする時は --enablerepo=epel と文句言われるので-y
のパラメータを追加すること。

内部の構成を確認する、パーティションを変更したりする場合で2TBを超える場合は、
fdiskではなく parted -l とかで、処理をすること

マウント先を、適宜指定する
# mkdir /mnt/usbhdd
マウント
# mount -t ntfs-3g /dev/sdb1 /mnt/usbhdd
アンマウント
# umount /mnt/usbhdd

以上

2018/05/19

Linux find 今日作業したファイルを検索

作業したファイのバックアップを取る際に、広域に跨ってると意外に探すのが面倒だったりする。
いつ頃作業したかがわかれば、findで割と容易に見つけられる。

オプション
-type f :ファイルのみを対象に検索
-type d :ディレクトリを対象に検索
-mmin -60 :60分以内に更新
-amin -60 :60分以内にアクセス
-mtime -2 :2日以内に更新
-atime -2 :2日以内にアクセス
-anewer :後述のファイルの日付より後に更新されたものを抽出

今日アクセスしたファイルやディレクトを検索
$ find /home/aaa/bbb/ -atime 0

60分以内に更新したファイルを検索
$ find /home/aaa/bbb/ -type f -mmin -60

元.vmファイルより新しいファイルを検索
$ find /home/aaa/bbb/ -anewer ./work/元.vm

2018/05/17

SQL JOIN時に絞り込み条件付加

join on を指定する際に、条件を付けてjoinできるのを知った。

select <テーブルA>.<カラム1>,<テーブルA>.<カラム2>・・・・,<テーブルB>.<カラム5>,<テーブルC>.<カラム2> from <テーブルA> inner join <テーブルB> on <テーブルB>.<カラム1>=<テーブルA>.<カラム1> and <テーブルB>.<カラム1>=true and <テーブルB>.<カラム2>=0
left join <テーブルC> on <テーブルC>.<カラム1>=<テーブルA>.<カラム1> where 更に条件;¥

このような感じで、join on の際に、複数の条件を付与して連結できる。



LeftJoinの場合は、従の条件を絞ってから連結 というような動きにはならないようだ。
あくまで、 主の条件が絞られていれば、絞ってから連結とする模様。

where以下に条件を書かなくても絞り込めるので、where以下がスッキリする、整理しやすい
というメリットがある。




grepを使った絞り込み ファイル単位で複数の行に条件を設けて抽出する場合


grepを使った絞り込み

条件

ディレクトリA
   aaa.xml
   bbb.xml
   ccc.xml
   ・
   ・
   ・
   zzz.xml

aaa.xml
<type>0</type>
   ・
   ・
<name>0463</name>

bbb.xml
<type>1</type>
   ・
   ・
<name>0463</name>

ccc.xml

<type>2</type>
   ・
   ・
<name>1234</name>

ccc.xml
<type>0</type>
   ・
   ・
<name>0463</name>


ディレクトリAの中にあるxmlで、typeが0、nameが0463のファイルを抽出したい場合
一回のgrepで抽出しようとしたが、行が異なると判定されてしまうので、上手くいかず。
-P '検索箇所頭[\s\S]*?検索箇所末尾' の Pオプションを使った場合、
ファイルサイズが大きく、ファイス数が多いとかなりの負荷がかかる。
また、改行の\nを削除したファイルに置換するものコピーの手間がかかる。
今回の対象ファイル数が、25,000ファイル位あった。
こんなの一つづつはご免蒙る。


そこで、次の手順を取った。
1.取得したい条件を一旦ファイルにする。
 $ grep -r -l "0" /ディレクトリA >type.txt
 $ grep -r -l "0463" /ディレクトリA >name.txt

-rで回帰
-l でファイル名のみ抽出させる。(行数やパターンが出ると、2でgrepした際に重ならない)

2.grepで重なる部分を取得する。
 $ grep -f {type,name}.txt
 結果
 aaa.xml
 ccc.xml
  ・
  ・
 のように抽出したいファイルが絞り込める。
 実際は、
 /home/ディレクトリA/ディレクトリB_1000/1/20180301_134814.xm ディレクトリBのレベルで判別したいので、一旦マージ用のファイルを生成し、
 $ grep -f {type,name}.txt >merge.txt

この段で、P オプションとoオプション(only-matching)を使って絞り込む
  $ grep -oP 'ディレクトリB[\s\S]*?/' merge.txt | uniq -d
ディレクトリB/ ←この部分を取得したい。
 uniq -d  ユニークで重複を表示させない。
  結果
 ディレクトリB_1000
 ディレクトリB_1010
 ディレクトリB_1012
    ・
    ・
    ・
 ディレクトリ
期待値が取れた。 

2018/05/11

TeraTerm(ssh)でGUI(X11転送、X-Window)を使う。

WINDOWSマシンで、X-Window(X11転送、X11フォワーディング)を利用するために

接続先のサーバのsshdでX-wiondwsが許容されている。
TeraTermはインストールされている。
として、

https://ja.osdn.net/projects/sfnet_xming/releases/
ここから、
Xming
Xming-fonts

を其々インストーラーからインストールする。

Xmingをデフォルトでインストールする。

途中でポート(ファイアーフォール)の許可を求めてくるので、許可しておく。
続いてXming-fontsもデフォルトでインストールする。

TeraTermを立ち上げて、
設定⇒ssh設定⇒SSHポート転送を開き、

リモートの(X)アプリケーションをローカルのXサーバに表示するにチェック。

設定の保存をして、再度立ち上げれば、X11転送の設定が完了。(TeraTermの再起動が必要)

端末から、sshでログインして、GUIのコマンド(nautilusなど)を実行すると
X-Windowsが立ち上がる。

sshを更に経由する際は
(直接外部からでなく、一旦固定IPのサーバを経由して、そこからローカルアドレスのサーバにアクセスする様な場合
sshに -Yのパラメータを付けて、
ssh -Y ユーザ名@IPアドレス としておかないと、
X11転送を実行する際に。エラーが帰ってきます。

OpenSSH-7.3p1 日本語マニュアルより、
-Y
信頼された X11 転送を許可します。信頼された X11 転送は、X11 SECURITY 拡張機能の制約をうけることはありません。
との事である。

最初これが見つからずに、認証で躓いたので、オボエガキ。

2018/04/05

PHP URLのgetパラメータ で利用できる文字列と対策

メールで飛んできた内容にurlを張り付けて、DBに書き込むという
少々危険な匂いを漂わせるプログラムを書いたところ、

urlのgetパラメータにコード変換しないと利用できない文字列があった。

具体には以下の一覧を参照

文字 ! " # $ % & ' ( ) * + , - . /
コード %20 %21 %22 %23 %24 %25 %26 %27 %28 %29 %2A %2B %2C %2D %2E %2F
文字 : ; < = > ? @ [ \ ] ^ _ ` { | } ~
コード %3A %3B %3C %3D %3E %3F %40 %5B %5C %5D %5E %5F %60 %7B %7C %7D %7E

今回は、メールアドレスをgetパラメータで遣り取りしたかったので、
@を%40に変換してあげる必要がある。

$mailadd= "hoge@hoge.com";
$mailadd = str_replace("@", "%40", $mailadd);


$msg .= "http://192.168.0.xxx/insert.php?password=$password&username=$username&mailadd=$mailadd"."\n";

こんな感じで
メールの本文の中にinsert.php で使う変数をgetパラメータで予め投げておきたいときに
役に立ちそう。
地味に%20の半角や%2fのスラッシュあたりが便利。


postgrers シーケンス nextvalの記述と確認と変更

シーケンス(シーケンシャル、連番)作成
create sequence seq_id start with 1;

現在のシーケンス確認 
SELECT last_value from seq_id;

nextvalの値を確認
select nextval('seq_id');

値を修正
SELECT SETVAL('seq_id',999);




2018/02/20

SQL CASE文 複数記述 三つの内最大の物を取得する 

次のようなテーブル名 Scoreで4行の其々最大のレコードを取得したいとき。 


Score
x y z
1 2 3
1 2 2
3 3 3
5 4 2

単純な比較の場合は、簡単な記述で済む


SELECT CASE WHEN x < y THEN y
            ELSE x END AS maxmum
  FROM Score;





しかしながら、複数で比較が発生する場合は些か記載が面倒になる




SELECT CASE WHEN CASE WHEN x < y THEN y
                      ELSE x END < z THEN z
            ELSE CASE WHEN x < y THEN y
                      ELSE x END END AS maxmum

  FROM Score;

4つでの比較になると、更に2回記述が増えるので、非常に見難い。
三つ巴までが使用限界と思う。


テーブル内に処理番号、日付、店舗ごとの管理連番、を格納している社内DBで、
年度ごとの店舗ごとの処理件数の合計をカウントでなく、管理連番の最大値の合計を
取得したかった。
受付時、受付受理時、一次納品、二次納品、三次納品、納品完了
このようなステージごとに管理しているが、
一次~三次納品は一括りで数値が欲しかったため、
複数のcaseが必要になった。

力技で一行づつ比較となるので、
レコード数が重いと結構負荷がかかるようだ。

2017/12/12

Gmail パスワード付きzipファイルの送受信がNGになった。

gmailに自社ドメインのメールを自動転送して利用しているのだが、
12月に入って、一部のメールが転送されなくなった。

原因を調べたところ、
https://support.google.com/mail/answer/6590?hl=ja



Gmail でブロックされるファイルの種類


「このメールは、コンテンツにセキュリティ上の問題が潜んでいる可能性があるためブロックされました」という内容のエラーが Gmail に表示されるのにはさまざまな理由が考えられます。Gmail では、実行可能ファイルや特定のリンクを含むメールなど、ウィルスを拡散させる可能性があるメールがブロックされます。

ファイルが添付されているメール

・ウィルスや不正なソフトウェアからユーザーを保護するため、Gmail では次のような特定の形式のファイルを添付できません。
下記で指定されている特定のファイル形式(.gz や .bz2 ファイルなどに圧縮されている場合、または .zip や .tgz などのアーカイブ ファイルに入っている場合も含む)

・悪質なマクロが埋め込まれているドキュメント

・アーカイブが格納された、パスワードで保護されているアーカイブ
 ↑ これじゃん・・・。



パスワード付きのzipはNG、今月からの仕様変更のようだ。
Gmail全体に掛けているようなので、個別回避は不可能っぽい。
転送方法の再検討が必要になった・・・。


5年、10年前と違って、誰もが簡単にインターネットに接続できる時代になり、
便利になった反面、セキュリティはリテラシーの低いユーザレベルで基準を設定しないといけなくなるから、
世の中って難しい。

2017/10/25

Linux 削除できないディレクトリ作成 解除方法 chattr

sambaの運用時にパーミッションで完全制御を行いたくない場合(面倒な場合)でも、
ディレクトリの名前を勝手に変更されては困る場合がある。(プログラムに絡む所など)
そんな時に、chattr コマンドを利用する。
ext2/ext3/ext4の際に利用できる。



chattr [option] [property] FILE...

option
-R 変更を再帰的に適用する
-V 詳細に出力する
FILE ファイルを指定する

property
a 追記のみ可能とする
c ファイルを圧縮する
d dumpの対象外とする
e 拡張フォーマットを使用する
i 変更できなくする
j データのジャーナリングを行う
s 安全な削除(データブロック内を消去)
t 末尾のマージをできなくする
u 削除できなくする
A atime(アクセス時刻)を更新しない
D ディレクトリを同期的に更新する
S 同期的に更新する


ex) ディレクトリの変更をできなくする。
# chattr +i ディレクトリ名

ex) ディレクトリの変更を許可する
# chattr -i ディレクトリ名

リテラシーが低いユーザが多い場合に結構使える。



2017/05/20

VAIO Phone A FOMA-SIM 通話のみ利用の注意点

docomoフィーチャーフォンからVAIO PHONE Androidへの移行時注意

過去に所有していたガラケーを使い廻して何とか運用していたが、
いよいよ、具合が悪くなってきたので、今流行のDSDSをやってみようかな
と思い、VAIO PHONE Aを購入。
本体が届いたので、早速、SIMカードをmicro-simに交換しに行った。
docomoさんはxiのdocomo携帯を購入しないと、あくまでガラケーでの
通話契約になるらしい。(意味わからんが・・・。)
そのため、通話料金は 
 ¥2,200-(カケホーダイ ケータイ)
+¥500- (指定外デバイス料)これ意味わかんないよね?
計¥2,700-
これを機に、キャリアメールは止めました。
(¥300/月のiモードを解約)
ドコモさん、もう、指定外デバイス料金なんて取っている時代じゃないですよ。
と思うけど・・・。
ドコモのアドバンテージは裾野が広い事なんですよね。
auだと、CDMAがネックになってDSDSできる機種自体が選べない状態だし・・・。

因みに、本日持ち込んだドコモショップの男の子は自社商品でないから、この仕様がわかってなかったみたい。
simカードのサイズ変更が終わったから、帰ろうと思ったところ、
simカードの確認をしてくれと言われたので、刺してみたが、通話が出来ない。
しきりに「モバイルネットワークが利用できません。」とエラーを返してくる。
その場で、ちょっと弄ったけど、解決せず。
「ドコモショップにある動作試験用のガラケー貸してよ、micro-simで通話できるの確認出来ればもういいから」
と言っているのに、全く貸してくれない。
「持ち込み機種は自己責任ですので・・・。」も始まってかなり面倒な感じだった。
「simカードはちゃんと認識しているんでしょ?」
と聴いたところ、「大丈夫です」との事だったので、
じゃぁ、通話の動作確認しなくても良いよね?
と云うことにして帰りました。
なお、会社にあった、micro-simの端末に差し込んだら認識したので、
良かったよかった。

少し調べた所、
この機種は、simカードを
・4G/3G/2G(通話・データ通信)
・3G/2G(通話専用)
として識別させるようですが、一枚しか刺さないと4G/3G/2G(通話・データ通信)
の区分を強制的に設定し、データ通信を強要してくる仕様のようです。
通話のみにしたい場合は、
simカードを二枚刺し、ダミー側を
・4G/3G/2G(通話・データ通信)として認識させる必要があるようです。

FOMA(3G)の回線だけでスマートフォンを使う可能性は
マイノリティってことですね・・・。(私がやっている事はかなりマニアックなのか・・・。)

下手に3G/2Gの通話のみを選択できるようにすると、ライトユーザがデータ通信出来ないとクレーム付けてくる対策だろうか?
そもそもDSDS環境でスマホを持とうという人間は、端からマイノリティな気が
するので、せめて、VAIO PHONE Aに「良くある質問」位を作って
載せてあげて欲しいかな?


結論
VAIO Phone A FOMA-SIMで運用するには、ダミーでもなんでもいいので、simを2枚刺して、通話専用にFOMAカード(3G)を当てれば、通話専用で使えます。

2017/03/21

rsync

LastBackup=`ls -t $BackupDIR | grep backup | tail -1`


ディレクトリ名にbackupが入っていると、ソートが上手くいかないようで、
tailが最新の日付を返していない。
そのため、--link-destのバックアップがハードリンクになっていない。


--link-dest の動き 
コピー元のディレクトリ ⇒ $NewBackup
但し コピー元のディレクトリ の内、LastBackup にあるものは、ハードリンクを生成する。
つまり、容量が増えない。



スクリプトシェル
#!/bin/sh
# バックアップ先ディレクトリ指定
BackupDIR=/home/*****/dailyBackup

mkdir -p $BackupDIR
# バックアップログ定義
BackupLog=/home/*****/log/rsync_backup.log rm -f $BackupLog
touch $BackupLog
chmod 600 $BackupLog
#エラーチェック
error_exit () {
exit 1
}
#バックアップ実行
echo "`date` backup start" >> $BackupLog
LastBackup=`ls -t $BackupDIR | grep backup | tail -1``ls -t 
$BackupDIR tail -1`
NewBackup=`date +%Y%m%d`backup ←これを消す。

mkdir $BackupDIR/$NewBackup
rsync -rlptv --ignore-existing
 --whole-file --link-dest=../$LastBackup /コピー元のディレクトリ/ $BackupDIR/$NewBackup >> $BackupLog 2>&1

code=$?
if [ $code -ne 0 ]; then
cat $BackupLog | mail -s "BACKUP NG CODE IS $code" root
rm -rf $BackupDIR/$NewBackup
error_exit
fi
echo "`date` backup end" >> $BackupLog

2017/02/14

YAMAHA RTX-1200 システムlog保存

大手企業から個人情報の流失問題が発生してしまった事を受け、国が個人情報保護の対策ついてのアンケートを実施してきた。
この中に外部へのアクセスlogの保存等という項目があったので、実装してみる事にする。

SYSLOGのバックアップを外部サーバに行う場合と、USB等の外部メモリに行う場合が選択できるようなので、まずはUSBでいいかな?と云うことで、その辺にあったbuffaloさんの8GBのUSBフラッシュメモリを接続してみた。
systemLogの外部メモリへの保存方法

telnetで接続して、administratorになってから行う。

外部メモリへの書き込み設定

# external-memory syslog filename usb1:rt_syslog.log

usb1にrt_syslog.logという名前で保存していく。

ファイルサイズは、自動で割り当てられるらしく、ファイルサイズはフォーマットをfat32にしたため、
最大でも4GBだが、外部メモリの空き容量をEn、config保存用の領域をCn、mainファイル用の領域をMn、
またbackupファイル用の領域をBnとすると、各領域のサイズはおよそ以下のような計算らしい。
Cn: 1MB、もしくはEn/10のうち、どちらか大きい方。但し、En/10の上限は100MB
Bn: (En - Cn)/2 
Mn: En - Cn - Bn

En=7,536,600KB ⇒ 最大値の 100,000KB
Bn=3,718,300KB
二つ目のファイルは
En=3,818,300KB ⇒ 最大値の100,000KB
Bn=1,859,150KB

となってくようだ。

容量が一杯になると、古いのを消すらいが、およそ一週間で8GBを使い切る予測なので、経過を確認したい。

USB1に保存されているファイルの確認をするコマンドライン

# show file list usb1:/
  size        date      time   sname        longname
--------- ----------- -------- ------------ --------------------------------
  2910179 Feb-14-2017 17:36:34 RT_SYS~1.LOG  rt_syslog.log
took 0 sec


こんな感じで表示される。

USBメモリの内容を確認したい場合

# show status external-memory
Host controller:           Running
Syslog profiles
  Syslog file name:        usb1:rt_syslog.log [Writable]
  Backup file name:        usb1:rt_syslog.bak
  Maximum file size:       965312512 bytes
  Buffering:               OK
Statistics profiles
  Syslog file name:        [Not specified]
Syslog statistics
  Recorded times:          2472 (TIMER:2472, FULL:0)
  Discarded times:         1 (FULL:0)
  Dropped lines:           1
File Operation statistics
  Syslog aborted:          1
  Open failed:             0
  Backup created:          0
  Backup failed:           0 (DELETE:0, RENAME:0, CLOSE:0)
  Write error:             0
  Write retry failed:      0

usb1
Bus power feed:            ON
Attached device
  Device name:             0x0098
  Vendor name:             0x0411
  Maximum transfer rate:   480Mbps(High speeed)
  Memory capacity:         7536600 KB
MASS Storage Class Transmit statistics
  Timeout:                 0
  Stalled:                 0
  Canceled:                0
  I/O error:               0
  Unknown:                 0

sd1
Bus power feed:            ON
Attached device            Not attached

USBを取り外す場合

RTX-1200本体のUSBの刺さっている横のボタンを2秒以上押して、
音が鳴ったら取り外してOK。

2017/01/24

rsync

2017年1月23日記載
rsyncで差分を止めていたのだが、いよいよHDDの容量を逼迫してきた。

そこで、

--ignore-existing コピー先に存在するファイルは更新しない
こいつを嚙ましてみる。


LastBackup=`ls -t $BackupDIR | grep backup | head -1`
一番古いファイルとの差分を取っていたが、最新のものとの比較に修正
LastBackup=`ls -t $BackupDIR | grep backup | tail -1`



上手い事動きそうなので、定期的なフルバックアップをどのタイミングで行うか?
は今年の課題にしたいと思う。

スクリプトシェル
#!/bin/sh
# バックアップ先ディレクトリ指定
BackupDIR=/home/*****/dailyBackup

mkdir -p $BackupDIR
# バックアップログ定義
BackupLog=/home/*****/log/rsync_backup.log rm -f $BackupLog
touch $BackupLog
chmod 600 $BackupLog
#エラーチェック
error_exit () {
exit 1
}
#バックアップ実行
echo "`date` backup start" >> $BackupLog
LastBackup=`ls -t $BackupDIR | grep backup | tail -1`
NewBackup=`date +%Y%m%d`backup

mkdir $BackupDIR/$NewBackup
rsync -rlptv --ignore-existing
 --whole-file --link-dest=../$LastBackup /home/比較元のディレクトリ/ $BackupDIR/$NewBackup >> $BackupLog 2>&1

code=$?
if [ $code -ne 0 ]; then
cat $BackupLog | mail -s "BACKUP NG CODE IS $code" root
rm -rf $BackupDIR/$NewBackup
error_exit
fi
echo "`date` backup end" >> $BackupLog

2016/09/22

受信メール設定 dovcot

サーバを移行したあと、メールを使うユーザを追加した際に
受信サーバにアクセスできない というエラーが帰って来た。

原因が分かったので、忘れないうちに残す

dovcotの制御が原因だった。

ユーザを作成
useradd -m [ユーザ名]
passwd [ユーザ名]
2回入力して作成する。

var/spool/mail/[ユーザ名]

このファイルのパーミッションを660(恐らくデフォルト)から600に変える
こうしないと、応答に答えてくれない仕様の用だ。

以前の設定は、
660でも問題なく動いており、
応答もしてくれているようなので、
これに気づかずに悩んでしまった。

2016/09/06

サーバ移転で詰まったこと php関連

WEBサーバを移転した際に、嵌ってしまった原因を列挙しておく。
次回の更新が何年後か分からないが、忘備録

PHPのこと

/etc/php.ini
phpが稼働したら、
info.phpファイルを作り、設定確認
infophp();
?>


memory_limit (メモリ使用量の上限)
post_max_size (POSTデータの最大サイズ ※1回のアップロードファイルすべての合計サイズ)
↑今回、これを確認せず、8MBの壁にぶち当たり嵌った・・。

upload_max_filesize  (1ファイルあたりの最大アップロードサイズ)

この辺の数値が小さいと、画面が白いままになったり、
IF関数等で正しく動かない。

反映は

 # systemctl restart httpd.service




Postfixのこと

設定されているサイズを確認

# postconf | grep size_limit

body_checks_size_limit = 51200
bounce_size_limit = 50000
header_size_limit = 102400
postconf: warning: /etc/postfix/main.cf: unused parameter: mtp_sasl_security_options=
mailbox_size_limit = 此処をでかくする      例えば1GB     1073741824
message_size_limit = 此処を↑は小さくする  例えば100MB 104857600

反映は

# systemctl restart postfix.service


phpで作ったメールフォームで嵌った。



2016/08/09

postfixの設定など

社員用にPHPプログラム運用兼ファイルサーバを設置している。
いままでは、ローカルなメールの遣り取りだけで済んでいたのだが
どうしても、外部のメールサーバを経由して外部ユーザにメールを送らないといけなくなった。

ローカルの設定は結構いい加減にやっており、
外部にメールを送ろうとすると、rejectされてしまう。

CentOS7.x はpostfixが推奨されているので、設定することにした。

はじめに
postfixが動いているか?確認




# systemctl status postfix.service

今回は、phpが絡むので、設定する。
/etc/php.ini
L980位の
[mail function]
SMTP = localhost
smtp_port = 25
sendmail_from = なんかそれなに名前を付けておく。

※SMTP認証を使うときは、もう少し追記があるらしい。(今回はいらない)

# systemctl restart httpd.service
PHPの設定有効


つづいてpostfixの設定

前のかなりラフなものをちゃんとする。

 /etc/postfix/main.cf

L60
mail_owner = postfix 別のユーザに変更するときは、書き換える(今回不要)

myhostname = mail.xxx.co.jp 等

mydomain = xxx.co.jp 等

inet_interfaces = localhost 受信設定。受信しないので、localhostで良いが、ルータ等でセキュア環境にしてあるならば、allでもOKと思われる。

inet_protocols = ipv4 おまじない。ipv6をkillしている際は、記載しないと動かないらしい。

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ←註

mynetworks = XXX.XXX.XXX.0/24, 127.0.0.0/8 許容するネットワークの範囲を記載


mydestination に $mydomain を記載する際の注意

内部用のサーバから外部用のサーバにリレーする際に、
内部的には固定IP割り当てて、ルータで締めて、トンネル作って、そのアドレスを許容すればいいのだが、そこから外部に送る際、最近のレンタルサーバ等は、domainがいい加減だと、rejectしてくる。

そこで、$mydomainには、送信する際に問い合わせを受けても問題ないdomainを記載しておくのだが、mydestination に $mydomain を安易に書き加えると、外部サーバと内部サーバに同一の
アカウントがいる場合は、そのユーザに関しては、ローカルサーバ内にメールを送ってしまい。
本来の$mydomain に送るべきものが全く送れない状態になってしまうので、
注意が必要。
外部サーバを使ってメールを送信するような内部サーバのpostfixの設定で、
よほど特殊(たとえば内部で擬似的に運用する等の)な環境でない限り、
記載する際は注意が必要。






※SMTP認証を使う場合は、この辺も有効にする。
# In the case of SMTP, specify a domain, host, host:port, [host]:port,
# [address] or [address]:port; the form [host] turns off MX lookups.
#
# If you're connected via UUCP, see also the default_transport parameter.
#
#relayhost = $mydomain
#relayhost = [gateway.my.domain]
#relayhost = [mailserver.isp.tld]
#relayhost = uucphost
#relayhost = [an.ip.add.ress]

その他はそのままで大丈夫と思われる。

# systemctl restart postfix.service
再起動
# systemctl status postfix.service
エラーが無いか確認する。



この設定で、問題なく中継が出来た。
今後Gmailやその他のメールサーバと絡めたりしたいときには、
SMTP認証が必要になる。(今は止めておく)