PostgreSQLで全テーブルのレコード数を一気にドンするやつ

select count(*) とかだと、大量レコードのテーブルカウントは時間がかかりすぎる

一気にドンしたい場合はこれ

select n_live_tup from pg_stat_user_tables where relname='test' and schemaname='public';

以上

ログ監視とか、ターミナルいっぱい出す時に便利なやつ発見

キータで面白いの見つけたので共有。
http://qiita.com/greymd/items/8744d1c4b0b2b3004147

ログ監視とかの時、複数のログをtailしたり、ターミナルいっぱい出す時に便利そうなので使ってみた。
CentOS7に以下で導入しました。

su -
yum install tmux
wget https://raw.githubusercontent.com/greymd/tmux-xpanes/master/bin/xpanes -O ./xpanes
install -m 0755 ./xpanes /usr/local/bin/xpanes

xpanes -c 'tail -f {}' /var/log/{messages,maillog,yum.log,dmesg}

上記、ログは適当です・・・試した所、確かに4ペインでログが同時に見られました!!

こんな風にすると、1~100のDHCPの接続状況を一気に確認できたりします!すごい。

xpanes -c 'ping {}' 172.19.91.{1..100}

シェルスクリプト(sendmailコマンド)だけでメール送信

保守監視等で、よく利用するのだが毎回忘れるので備忘録的に。

CRONで毎日お昼の12時に実行するサンプル

0 12 * * * bash /path/to/dir/hogefuga_report.sh

sendmailコマンドを使用して、SQL(postgresql)を実行して結果をメール送信するスクリプトサンプル
hogefuga_report.sh

#!/bin/sh

#### 汎用メール送信スクリプト
export PATH=$PATH:/usr/sbin
export PGPASSWORD=naisyodayo

NOWDATE=`date '+%m月%d日 %R '`

HOGE_CNT=`psql -U postgres -d dev --tuples-only -c 'select count(*) as hoge_cnt from hogehoge_tbl'`
FUGA_CNT=`psql -U postgres -d dev --tuples-only -c 'select count(*) as fuga_cnt from fugafuga_tbl'`
HOGE_CNT=`echo ${HOGE_CNT} | tr -d " "`
FUGA_CNT=`echo ${FUGA_CNT} | tr -d " "`

MAIL_TO="hogeko@hoge.com.jp"
MAIL_CC="fugasuke@fuga.com.jp"
MAIL_BCC="pekeo@peke.com.jp"
MAIL_FROM="ore@oresama.com.jp"
SUBJECT="俺様のレポート"
DATA="俺様の反響結果は以下となる"

mail_send () {
cat << EOD | sendmail -t
From: ${MAIL_FROM}
To: ${MAIL_TO}
Cc: ${MAIL_CC}
Bcc: ${MAIL_BCC}
Subject: ${SUBJECT}
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"

俺様へ

今日(${NOWDATE})のレポートを送るのでよく見ること。

${DATA}

・ほげ数
${HOGE_CNT}

・フガ数
${FUGA_CNT}

以上

EOD
}

mail_send

exit 0

Amazon Lightsail で Magento2 やってみた

実家が自営業やっているので商品管理をオープンソースでってことになり、Magentoというのを使ってみようということに。手っ取り早いのが、最近出来たばかりの新しいAWSのVPSサービスで、Lightsailってやつに、Magent2を組み込んだ状態でEC2みたいなサーバインスタンスが一瞬で起動できるようなので、試してみた。

https://lightsail.aws.amazon.com

もともとEC2でサーバ作った際に、AWSアカウントは持っているので、あとはボタンをポチポチ2回(アプリとサーバスペックを選択 画像参照)クリックでサーバで来たった!!!

screencapture-lightsail-aws-amazon-ls-webapp-instances-create-1482032674873

 

Magento2.1.2 と、インスタンスプランはとりあえずお試しなので、$10を選択。

BaseOSはデフォルトのAmazonLinuxにしたが、Ubuntuがよいとの書き込みもあるようだ。

設定したら、一番下の、「Create」をクリックして完了。

この状態で3~4分程度したらサーバがMagentoがインストールして起動状態となる。

試しに、画面に表示されているIPアドレスをブラウザで叩いてみると、そのうち以下のページが現れるようになる。

screencapture-ec2-54-152-228-196-compute-1-amazonaws-1482032507245画面下のペロッとめくれた部分に「Manage」とあり、ここから、Magento2のECサイト管理画面にアクセスできる。

ログインユーザ名は「user」パスワードはサーバー内部のログから取得する必要がある。

以下にパスワードの取得方法を記す。

 

screencapture-lightsail-aws-amazon-ls-webapp-instances-magento-1gb-virginia-1-connect-1482032471028AWSのこの画面から、「Connect using SSH」をクリックし、SSHコンソールを開く。

開いたら以下を入力しEnterを押下。

 cat /home/bitnami/bitnami_application_password

パスワードが表示されるので、これを管理画面のログインに利用すればOK。

コンソールのキャプチャ画像は下記。

aaa

 

 

 

 

 

 

 

 

無事ログインすると、以下の管理画面が表示される。

screencapture-ec2-54-152-228-196-compute-1-amazonaws-admin-admin-dashboard-index-key-c440ebc96710c4c2cb2efe6c35722b15a8b2f9b9724ca139927b0ee1b2ff6429-1482032494968

 

 

 

 

 

 

 

一旦ここまで。日本語化はまた今度。

 

reboot, shutdownコマンドが効かない!

さくらVPSがフリーズ。何とかリモートで対応したが、最後にrebootしようと思ってshutdown -r now したのだが、何も起こらず空振り状態。

以下にて、シャットダウンできた。

echo s > /proc/sysrq-trigger
echo u > /proc/sysrq-trigger
echo b > /proc/sysrq-trigger

さくらコンパネからの強制終了よりはマシかと・・・

複数行にまたがる値をGrepして抽出する

 

以下のXMLのように、路線名と鉄道会社名の両方を抽出したい場合、grep コマンドの複数行取得を用いると便利です。「grep -n」のように、nに数値を指定すると前後n行を取得してくれる為、その後 pasteコマンドにて結合し、grepコマンドが出力するセパレータの–(ハイフン2つ)をsedで置換し改行とすることで、複数行を1行にマージできます。あとは、sedなりawkなりで必要な部分を抽出したり、sort | uniq コマンドで重複除去したりします。

cat sample.xml | grep -1 operationCompany | paste -s | sed -e ‘s/\-\-/\n/g’ | sed -e ‘s/\r/|\n/g’

 

以下、sample.xml

 

<ksj:RailroadSection gml:id=”eb02_4228″>
<ksj:location xlink:href=”#cv_rss4228″/>
<ksj:railwayType>21</ksj:railwayType>
<ksj:serviceProviderType>4</ksj:serviceProviderType>
<ksj:railwayLineName>江波線</ksj:railwayLineName>
<ksj:operationCompany>広島電鉄</ksj:operationCompany>
<ksj:station xlink:href=”#eb03_2083″/>
</ksj:RailroadSection>
<ksj:RailroadSection gml:id=”eb02_4229″>
<ksj:location xlink:href=”#cv_rss4229″/>
<ksj:railwayType>21</ksj:railwayType>
<ksj:serviceProviderType>4</ksj:serviceProviderType>
<ksj:railwayLineName>白島線</ksj:railwayLineName>
<ksj:operationCompany>広島電鉄</ksj:operationCompany>
<ksj:station xlink:href=”#eb03_2079″/>
</ksj:RailroadSection>

Ubuntuで外部リポジトリ追加に失敗

特にまちがっていないのに以下のように失敗・・・

hoge@fuga:~$ sudo add-apt-repository ppa:kakrueger/openstreetmap
Cannot add PPA: 'ppa:kakrueger/openstreetmap'.
Please check that the PPA name or format is correct.

証明書の更新?したらうまく行った・・・
sudo apt-get install --reinstall ca-certificates

参考もと
http://www.webupd8.org/2014/03/fix-cannot-add-ppa-please-check-that.html

エンコードされた文字列をデコードするサービス

土曜日に、会社でもくもく会があり、その時つくったWebサービス。

「文字化けデコーダー」

http://tkn.jp/mojibake/

以下のエンコード形式の文字列のデコードに対応しています。

  • URL Encode
  • HTML文字参照
  • HTML実態参照
  • Base64 Encode
  • MIME Encode
  • uuencode
  • PHP serialize
  • PHP hex2bin
  • Quoted Printable
  • JavaScript String
  • Json 整形

システム開発やっていると、ログとかエラーメッセージとか、マルチバイト文字がデコードされずに表示される場面にたまに出くわすので、その時にスマートに解読できるのを作ってみました。

これから地味に少しずつ育っていくと思っています!

ま、エンコードマニアックス(http://encodemaniax.com/)という、定番サイトのほうが機能豊富で使いやすいので、オススメです!

WPのxmlrpc.phpを狙った攻撃

WordPressは世界中でかなり使われていることからいろいろな攻撃を受ける可能性が高いようです。

本日、サーバのロードアベレージが170近くまで上がっていたため、全く反応がなくなってしまいました・・・

ログを見てみる(ログイン~ログ参照まで15分位・・・(泣))と、xmlrpc.php にひたすらPOSTし続ける輩が・・・

85.159.237.219 – – [10/Jan/2016:15:35:10 +0900] “POST /xmlrpc.php HTTP/1.0” 200 370 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)”
85.159.237.219 – – [10/Jan/2016:15:35:20 +0900] “POST /xmlrpc.php HTTP/1.0” 200 370 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)”
85.159.237.219 – – [10/Jan/2016:15:35:20 +0900] “POST /xmlrpc.php HTTP/1.0” 200 370 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)”
85.159.237.219 – – [10/Jan/2016:15:35:11 +0900] “POST /xmlrpc.php HTTP/1.0” 200 370 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)”
85.159.237.219 – – [10/Jan/2016:15:35:12 +0900] “POST /xmlrpc.php HTTP/1.0” 200 370 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)”
85.159.237.219 – – [10/Jan/2016:15:35:21 +0900] “POST /xmlrpc.php HTTP/1.0” 200 370 “-” “Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)”

まずは、Apacheを止め(こちらも止まるまで5分位かかった・・・)、httpd.conf で、xmlrpc.phpを403にするFiles設定を行い、Apacheを起動。さらに下記をインストールしました。

https://ja.wordpress.org/plugins/disable-xml-rpc-pingback/

攻撃自体は止んでいませんが、Apacheプロセスが生成されなくなった為、問題なく動作するようになりました!!

ワンタイム年賀状

年賀の挨拶といえば年賀状、ワンタイムで年賀状メールを作成するサービスを開始しました。

今回は、日頃のご利用を感謝し、お年玉くじ付き年賀状のコンセプトで制作しました。

http://www.onetime-mail.com/nenga

是非、ご利用ください。