UJP - ハウツーカテゴリのエントリ

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

  • カテゴリ ハウツー の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - ハウツーカテゴリのエントリ

PHPでログインフォームを作って見る

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2018/2/13 23:48
 簡単なやつを作ってみた.基本的に,どこかのコピペ.
<html>
<head><title>Secure System</title></head>
<body>
<hr>
<center>
<?php
$time = date("Y/n/j Ah:i");
print($time);
?>
</center>
<hr>
<br>
<br>
<br>
<center><h1>Secure System</h1></center>
<br>
<br>
<br>
<br>
<center>
<form action="display.php" method="post">
  <table border="0">
    <tr>
      <td>User ID</td>
      <td><input type="text" name="USERID"></td>
    </tr>
    <tr>
      <td>Password</td>
      <td><input type="text" name="PASSWORD"></td>
    </tr>
      <td colspan="2" align="center">
        <input type="submit" value="Login"">
      </td>
    </tr>
  </table>
</form>
</center>
<hr>
<center>
Copyright 2018 ujp.jp
</center>
<hr>
 これを,login.phpとして保存してWebサーバにアップロードしてアクセスしてみると,次のような感じで表示される.


 アクセスした日時がでるのがミソ.

CasperJSをインストール

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2018/2/8 1:04
 ヘッドレスブラウザとしてのPhantomJSを使いやすくするためのツールがCasperJSらしい.PhantomJSだけだとフォーム入力やクリックを再現する部分の記載が面倒なのだとか.それを使いやすくするのがCasperJS.

MBP2017:Documents ujpadmin$ brew info casperjs🆑
casperjs: stable 1.1.4-2, HEAD
Navigation scripting and testing tool for PhantomJS
http://www.casperjs.org/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/casperjs.rb
==> Dependencies
Required: phantomjs ✔
==> Options
--HEAD
	Install HEAD version
MBP2017:Documents ujpadmin$
 CasperJSを使うにはPhantomJSが先にインストールされている必要があると書かれています.

MBP2017:Documents ujpadmin $ brew install casperjs🆑
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core, caskroom/cask).
==> Updated Formulae


==> Downloading https://github.com/casperjs/casperjs/archive/1.1.4-2.tar.gz
==> Downloading from https://codeload.github.com/casperjs/casperjs/tar.gz/1.1.4-2
######################################################################## 100.0%
🍺  /usr/local/Cellar/casperjs/1.1.4-2: 297 files, 7.1MB, built in 25 seconds
MBP2017:Documents ujpadmin $
 今回インストールしたのはCasperJS 1.1.4でした.
 恒例のファイルパスの確認と,バージョンの確認.

MBP2017:Documents ujpadmin $ which casperjs🆑
/usr/local/bin/casperjs🈁
MBP2017:Documents ujpadmin $
MBP2017:Documents ujpadmin $ casperjs --version🆑
1.1.4🈁
MBP2017:Documents ujpadmin $
 バージョンが表示されるまでに少し,時間がかかるなぁ.

PhantomJSでスクリーンショット

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2018/2/7 23:32
 ふむ.まずは一番シンプルなサンプルを拾ってきて実行.

// ブラウザ生成
var page = require('webpage').create();

// UAを設定
page.settings.userAgent = 'iOS';
// 指定されたURLを開く.
page.open('http://www.ujp.jp', function(status) {
        if (status === 'success') {
                // スクリーンキャプチャ
                page.render('www.ujp.jp.iOS.png');
                // ブラウザ内のJavaScriptを実行
                var title = page.evaluate(function() {
                        var title = document.title;
                        return title;
                });
                console.log(title);
        }
        // 終了のおまじない(必須)
        phantom.exit();
});
 実行して見る.
MBP2017:PhantomJS ujpadmin$ phantomjs hoge.js🆑
UJP - Unwired Job Professional
MBP2017:PhantomJS ujpadmin $

 作成されたファイルを見ると,こんな感じ.


 通常,Webブラウザだとスクロールして見る下の方まで全部画像化されていますね.

PhantomJS

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2018/2/7 1:32
 macOSやiOSに搭載されているWebブラウザのSafari.描画エンジン部分のWebKitはGoogle Chromeにも採用されている.
 今回取り上げるPhantomJSというのは,Webkitを使っているブラウザなんだけれど,コマンドラインで動くブラウザで,そういうカテゴリーのものを「ヘッドレスブラウザ」というらしい.つまりプレゼンテーション部分,GUI部分がない. GUIがないブラウザで何するの?というと,定型的ブラウザ操作を自動化ができる.

 まずは,brewのパッケージにあるか確認して見る.
MBP2017:~ ujpadmin$ brew info phantomjs🆑
phantomjs: stable 2.1.1 (bottled)
Headless WebKit scriptable with a JavaScript API
http://phantomjs.org/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/phantomjs.rb
==> Dependencies
Required: openssl ✔
==> Requirements
Build: xcode ✔
Required: macOS >= 10.7 ✔
MBP2017:~ ujpadmin $
 ありましたね.依存関係はOpenSSL,Xcodeのようで,macOSは10.7(Lion)以降です.早速インストール.
BP2017:~ nobuaki$ brew install phantomjs🆑
Updating Homebrew...
==> Auto-updated Homebrew!

==> Downloading https://homebrew.bintray.com/bottles/phantomjs-2.1.1.high_sierra.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring phantomjs-2.1.1.high_sierra.bottle.1.tar.gz
🍺  /usr/local/Cellar/phantomjs/2.1.1: 50 files, 50.3MB
MBP2017:~ ujpadmin $
 どこにインストールされたか確認.
MBP2017:~ ujpadmin $ which phantomjs🆑
/usr/local/bin/phantomjs🈁
MBP2017:~ ujpadmin $
 普通のところなのね.

画像でdiff

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2018/2/5 23:48
 ちょっとした調べ物の延長で,画像の差分を抽出して見ることにした.


 これ,オリジナルの画像ファイル.JPEG形式.この前行った寿司屋で食べた数の子.


 そして,加工後の画像ファイル.
 使っている環境には,ImageMagikをインストールしてある.この中にcompareというコマンドが.
MBP2017:Downloads ujpadmin$ which compare🆑
/usr/local/bin/compare🈁
MBP2017:Downloads ujpadmin $ /usr/local/bin/compare -version🆑
Version: ImageMagick 7.0.7-22 Q16 x86_64 2018-01-22 http://www.imagemagick.org
Copyright: © 1999-2018 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules
Delegates (built-in): bzlib freetype jng jpeg ltdl lzma png tiff xml zlib
MBP2017:Downloads ujpadmin $
 最新だな.そして差分を取ってみる.コマンドは,比較したいファイル1と2,出力したいファイル名という感じで指定.

...続きを読む

nginxをsplunkのプロキシーに設定する.

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2017/11/29 1:20
 今回の実行イメージはこれ.


 nginxの設定ファイルの場所を確認.
gaia:~ server$ ls -la /usr/local/etc/nginx/🆑
total 120
drwxr-xr-x  18 server  admin   612 11 23 20:46 .
drwxr-xr-x   9 server  admin   306 11 23 20:46 ..
-rw-r--r--   1 server  admin  1077 11 23 20:46 fastcgi.conf
-rw-r--r--   1 server  admin  1077 11 23 20:46 fastcgi.conf.default
-rw-r--r--   1 server  admin  1007 11 23 20:46 fastcgi_params
-rw-r--r--   1 server  admin  1007 11 23 20:46 fastcgi_params.default
-rw-r--r--   1 server  admin  2837 11 23 20:46 koi-utf
-rw-r--r--   1 server  admin  2223 11 23 20:46 koi-win
-rw-r--r--   1 server  admin  3957 11 23 20:46 mime.types
-rw-r--r--   1 server  admin  3957 11 23 20:46 mime.types.default
-rw-r--r--   1 server  admin  2680 11 23 20:46 nginx.conf
-rw-r--r--   1 server  admin  2680 11 23 20:46 nginx.conf.default
-rw-r--r--   1 server  admin   636 11 23 20:46 scgi_params
-rw-r--r--   1 server  admin   636 11 23 20:46 scgi_params.default
drwxr-xr-x   2 server  admin    68 11 23 20:46 servers
-rw-r--r--   1 server  admin   664 11 23 20:46 uwsgi_params
-rw-r--r--   1 server  admin   664 11 23 20:46 uwsgi_params.default
-rw-r--r--   1 server  admin  3610 11 23 20:46 win-utf
gaia:~ server$ 
 Apacheで言うところのhttpd.confのようなものがnginx.confファイル.このファイルにlocationを追加.
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        location /splunk/ {🈁
            proxy_set_header Host $host;🈁
            proxy_set_header X-Real-IP $remote_addr;🈁
            proxy_pass   http://localhost:8000;🈁
        }🈁

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
 proxy_set_headerによって受け取り側(転送先)のサーバがリクエストヘッダで本当のリクエストIPアドレスとホスト名を受け取ることができる.そうしないと全てがlocalhostになってしまう.
 次に,Splunk側の設定を変更する必要がある.まずは,設定ファイルのweb.confを確認.
gaia:Splunk server$ ls -la /Applications/Splunk/etc/system/default/web.conf🆑
-r--r--r--  1 server  wheel  49972  9 13 14:06 /Applications/Splunk/etc/system/default/web.conf
gaia:Splunk server$ 
 root_endpointパラメータにリクエスト元(今回の場合nginx)からくるパスを設定する.今回はそのままsplunkで設定.そして,tools.proxy.onパラメータをコメントを外して有効化.
# Top level name for the site
#root_endpoint = /
root_endpoint = /splunk🈁

# path to static content
# The path here is automatically appended to root_endpoint defined above
static_endpoint = /static

# Set this in local/web.conf if running behind a reverse proxy to log
# the X-Forwarded-For address of the client rather than the address of the proxy
# tools.proxy.on = True
tools.proxy.on = True🈁
 nginxとSplunkの再起動が終わったら,アクセスしてみる.
503 Service Unavailable

Return to Splunk home page

設定されている appServerPorts では、appserver に直接アクセスできません。
 残念...appServerPortsはweb.confに記載がありました.
# list of ports to start python application servers on (although usually
# one port is enough)  Set to 0 to instead run the application server
# directly as the web front end on 'httpport', separate from splunkd.
appServerPorts = 8065🈁
 翻訳すると「(通常は1つのポートで十分ですが)0に設定すると、代わりにsplunkdとは別の 'httpport'上のWebフロントエンドとしてアプリケーションサーバーを直接実行します。」とありますので,8065に変わって0を設定してみます.

vi  /Applications/Splunk/etc/system/default/web.conf

#appServerPorts = 8065
appServerPorts = 0
 Spunkを再起動.
 まずは,nginxに接続.

http://localhost:8080

 問題なければ,Splunkに接続.

http://localhost/splunk/
 

 接続できました.うまく接続できない時は,ブラウザのキャッシュをクリアしてみてください.

nginxをインストールする

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2017/11/23 21:02
 nginxは高速処理を目指したWebサーバ.今回はプロキシのフロントとするのを目的としてインストールしてみる.
gaia:~ server$ brew install nginx🆑
==> Installing dependencies for nginx: pcre
==> Installing nginx dependency: pcre
==> Downloading https://homebrew.bintray.com/bottles/pcre-8.41.el_capitan.bottle
######################################################################## 100.0%
==> Pouring pcre-8.41.el_capitan.bottle.tar.gz
🍺  /usr/local/Cellar/pcre/8.41: 204 files, 5.4MB
==> Installing nginx
==> Downloading https://homebrew.bintray.com/bottles/nginx-1.12.2_1.el_capitan.b
######################################################################## 100.0%
==> Pouring nginx-1.12.2_1.el_capitan.bottle.tar.gz
==> Caveats
Docroot is: /usr/local/var/www🈁

The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.

nginx will load all files in /usr/local/etc/nginx/servers/.

To have launchd start nginx now and restart at login:
  brew services start nginx🈁
Or, if you don't want/need a background service you can just run:
  nginx
==> Summary
🍺  /usr/local/Cellar/nginx/1.12.2_1: 23 files, 1MB
gaia:~ server$ 

...続きを読む

リダイレクトだけ実行

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/12/1 1:21
 ターミナルで,>だけを実行してみる.
MBA13:~ ujpadmin$ >
-bash: syntax error near unexpected token `newline'
MBA13:~ ujpadmin $
 syntax errorです.文法違い.File not foundじゃなくてsyntax errorです.

 こんな事を実行してみる.
MBA13:~ ujpadmin $ > a.txt
MBA13:~ ujpadmin $
 いきなりリダイレクト.なんのエラーも出ない事に注目.
 ファイルをみてみる.
MBA13:~ ujpadmin $ ls -la a.txt
-rw-r--r-- 1 ujpadmin staff 0 12  1 01:16 a.txt
MBA13:~ ujpadmin $
 なんだか0バイトファイルが出来ている.今日は,これによってゼロバイトファイルが出来てしまって,2時間くらい無駄にした.いや,勉強になったから良しとしましょう〜.

vimで改行コードやタブを表示する

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/11/24 23:56
 タブが入っていることで思わぬ動作をすることって,意外とよくあるのだけれど,vimでも他のテキストエディタのように明示できるようになっていた.

MBA13:ujpadmin$ cat .vimrc
set listchars=tab:»-,trail:-,eol:↲,extends:»,precedes:«,nbsp:%
set list
MBA13:ujpadmin$
 こうしておくと,タブ,半角スペース,改行コードも表示できるようになりました.全角スペースも表示できるようになると完璧だね.

vimが自動でインデントして困るのでOffにする

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/11/24 23:41
 よそ様のサーバだから詳しいことはわからないけれど,最近のRed Hatに付属しているvim(vi)は,Microsoft Wordのようにインデントしてくれる.とても煩わしい.
 これをオフにするには,.vimrcに次のように設定しておく.
autocmd FileType * setlocal formatoptions-=ro
 でもまぁこういう設定のニーズがあるということなのか.

SSL証明書の有効期限をコマンドで調べる

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/11/24 23:37
 SSL証明書の有効期限を調べるために,1つや2つならブラウザの鍵マークを参照すれば良いけれど,大量となると面倒なのでコマンドで取得してみる.

 まずは,URLは長いので環境変数に入れてみた.
MBA13:ujpadmin$ FQDN=www.google.co.jp
MBA13:ujpadmin$ echo $FQDN
www.google.co.jp
MBA13:ujpadmin$
 次のようにopensslコマンドを実行.
[/code]MBA13:ujpadmin$ openssl s_client -connect $FQDN:443 < /dev/null 2> /dev/null | openssl x509 -text|head -n 10
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
2a:31:85:78:f8:ec:3f:8a
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=US, O=Google Inc, CN=Google Internet Authority G2
Validity
Not Before: Nov 10 15:47:36 2016 GMT
Not After : Feb 2 15:31:00 2017 GMT
MBA13:ujpadmin$
[/code] Validity=妥当性を保証する期間ということか.
 
 バッチファイルで,ファイルの有無を確認するのは簡単だけれど,ディレクトリを検査する仕組みはない.でもチェック用のファイルを作ることで,ディレクトリの有無を調べられる.

SET TARGET_DIR=D:\TEST

@echo > %TARGET_DIR%\chk.txt
@if not exist %TARGET_DIR%\chk.txt goto TARGET_NOT_FOUND
@del /F/Q %TARGET_DIR%\chk.txt
@echo ディレクトリがありました.
@goto :EOF

:TARGET_NOT_FOUND
@echo ディレクトリはありませんでした.

:EOF
 むかし,仕事で頻繁に電話でアメリカ人と英語で話をしていたおじさんが居て「流暢な英語ですね」と褒めたら「単語を知らないから言葉数が多くなるから喋れているように見えるだけだ」と言っていた.
 手数が多いこの方法も,それと似ているかなぁなんて思ったりした.ただそれだけ.

macOSでネットワークドライブをマウントする

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/11/14 23:53
 Windowsサーバのファイル共有をMacで使う時は,mountコマンドを使う.
 SolarisとかLinuxだとドライブのマウントは/mntを使うような暗黙のルールになっているけれど,それと似たような感じでMacの場合は/Volumesを使う.
 ここにマウントポイントを作って,マウントする.

mkdir /Volumes/fileserver
mount_smbfs //192.168.100.20/data/ /Volumes/fileserver

 mountコマンドにユーザパスワードをつける時は,こんな感じ.

mount_smbfs //ujpuser:password@192.168.100.20/data/ /Volumes/fileserver
 そして運悪く?!パスワードにドルマークが入っていたりすると,マウントコマンド認証エラーになる.
$ mount_smbfs //ujpuser:4L3$gear@192.168.100.20/data/ /Volumes/fileserver
mount_smbfs: server rejected the connection: Authentication error
$
 パスワードにドルマークが入っている場合は,こんな感じでエスケープする.
mount -t smbfs //ujpuser:4L3\$gear@192.168.100.20/data/ /Volumes/fileserver
 これ,わかるのに2時間かかった...

~と〜

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/9/2 1:19
 ~と〜の違い.

~と〜
ですよ.

~〜です.
わかりやすい様に,ファイルに保存して中身を確認.
MBA13:~ $ cat wave.txt
~〜
MBA13:~ $
答えは,これ.
MBA13:~ $ hexdump wave.txt
0000000 ef bd 9e e3 80 9c 0a
0000007
MBA13:~ $
 つまり,1文字目の「~」は0xEFBD9Eで,2文字目の「〜」は0xE3809Cなのである.〜が~に変換される問題だと誤解していたけれど,この問題は,一言で言うと

 SJISにある「〜」をUTF-8に変換する際に「~」にするか「〜」にするかは実装次第

 普通の人には関係ない.でもこれ,大問題.


あま~いアイス
おいし〜いアイス

 表示上,人間の目だとどっちでも良いけれど,あいまい検索で「〜いアイス」としたら「おいし〜いアイス」しか引っかからないよね.

 他にも,ー—―とか,-‐‑–−ーとかがあって.これは,仕様策定時のミスらしいけれど,将来的にエンジニアの「専門家」としての地位確保のための布石なんだとおもうね.2000年問題よりも巧妙だな.まぁ,SJISが撲滅すれば良いのだろうけれど,だいぶなくなったけれど.
 まずは,Xcodeのバージョンを調べる.
$ xcodebuild -version
Xcode 7.2.1
Build version 7C1002

$
 svnのパスは次の通り.
$ /Applications/Xcode.app/Contents/Developer/usr/bin/svn --version
svn, version 1.7.20 (r1667490)
   compiled Jan 14 2016, 18:19:52

Copyright (C) 2014 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/

The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
  - handles 'http' scheme
  - handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
  - handles 'http' scheme
  - handles 'https' scheme

$
 1.7.20なので日本語対応の1.7.14より新しいバージョンだけれど,日本語ファイルに対応しているかどうかはわからないな.

Eclipse 4.5のSVNのバージョンを下げるには

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/8/20 18:54
 Eclipse 4.5(mars)は,SVN 1.8なので互換性がないので,以下のサイトからSVNKit 1.7.12を入手する.

 ヘルプから新規ソフトウェアのインストールをクリックします。
 作業対象に以下のURLを入れる.

http://community.polarion.com/projects/subversive/download/eclipse/3.0/update-site
 Home Brewで最新版のSubversionをインストールしても,日本語ファイルに対応してない.例の半濁点問題だね.半濁点が入ってないとcommitできる事も多い.
 それで,Subversion 1.7にする事で,日本語ファイルに対応できたという話.事前に気をつけなければいけないのは,1.9を使っているとバージョンダウンするので,リポジトリの管理バージョン(データベースあたり?)が異なるので1.7でアクセスできないから,再ダウンロードが必要になるという事.
 まずは,インストールされているSubversionのバージョンを確認.
$ 🆑brew info svn
subversion: stable 1.9.4 (bottled)🈁
Version control system designed to be a better CVS
https://subversion.apache.org/
/usr/local/Cellar/subversion/1.9.4... (148 files, 11.1M)
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/subversion.rb
==> Dependencies
Build: pkg-config ✔, scons ✔
Required: sqlite ✔, openssl ✔
Optional: gpg-agent ✘
==> Options
--universal
        Build a universal binary
--with-gpg-agent
        Build with support for GPG Agent
--with-java
        Build Java bindings
--with-perl
        Build Perl bindings
--with-python
        Build with python support
--with-ruby
        Build Ruby bindings
==> Caveats
svntools have been installed to:
  /usr/local/opt/subversion/libexec

$
 日本語に対応してないので,Subversion 1.9.4をアンインストール.

...続きを読む

 大量のファイルをupdateしようとするとこんな感じでエラーがでる.
$ svn update
svn: E155004: Run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
svn: E155004: Working copy '/Users/ujpadmin/svn/doc' locked.
svn: E155004: '/Users/ujpadmin/svn/doc' is already locked.

$
 表示されている通りsvn cleanup後に,再度svn updateすると続いて続いてダウンロードされるが,またしばらくするとエラーになる.何度もなんどもsvn cleanup;svn updateを繰り返しやればよのだけれど,とても面倒.いつ終わるか不明だし.
 これは,svnのバージョン1.8以降,デフォルトの転送モードがBulkからSkeltaに変更されたことによる影響なのだそうです.
 バージョンを確認してみる.

...続きを読む

Intel Power Gadget

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/8/16 22:42
 Intelが無料で提供しているPower Gadget.

Intel® Power Gadget
https://software.intel.com/en-us/articles/intel-power-gadget

 CPUが使っている電力量とか現在動作している周波数,そして温度のデータが取れるGUIツール.Mac版もあるけれどWindows,Linuxもある.
 今回はそこじゃなくて,これ.

Using the Intel Power Gadget API on Mac OS X
https://software.intel.com/en-us/blogs/2012/12/13/using-the-intel-power-gadget-api-on-mac-os-x
 
 Intel Power GadgetをインストールするとGUIツールだけれども,MRTGでグラフ化しようと思ってどうにかデータが取れないか?と思っていたら,APIが提供されていました.

 そしてサンプルプログラム.

Intel Power Gadget API on Mac OS X Xcode project example download
https://software.intel.com/en-us/articles/intel-power-gadget-api-on-mac-os-x-xcode-project-example-download

 これをちょっと修正すれば,リストが取れるようになります.
 ダウンロードしたプロジェクトを,XCode 7.3を使ってビルドしたらいい感じでした.サンプルの改造で十分!

Macでハイバネーションの時間を設定する

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/8/10 1:12
Yosemiteで/var/log/system.logを参照すると,次のような状態が.
Aug  8 19:15:09 MBA2014 kernel[0]: [0x851943000, 0x19000000]
Aug  8 19:15:09 MBA2014 kernel[0]: [0x88500a000, 0x19000000]
Aug  8 19:15:09 MBA2014 kernel[0]: [0x8a5542000, 0xe000000]
Aug  8 19:15:09 MBA2014 kernel[0]: [0x0, 0x0]
Aug  8 19:15:09 MBA2014 kernel[0]: AppleCamIn::systemWakeCall - messageType = 0xE0000280
Aug  8 19:15:09 MBA2014 kernel[0]: ARPT: 30064.571369: AirPort_Brcm43xx::powerChange: System Sleep🈁
Aug  8 19:15:09 MBA2014 kernel[0]: AppleCamIn::systemWakeCall - messageType = 0xE0000340
Aug  8 19:15:10 MBA2014 kernel[0]: IO80211AWDLPeerManager::doDisable   source [handleSIOCSIFFLAGS]
Aug  8 19:15:10 MBA2014 kernel[0]: en0: BSSID changed to 00:00:de:0c:0c:0c
Aug  8 19:15:10 MBA2014 kernel[0]: en0: channel changed to 48
Aug  8 19:15:10 MBA2014 kernel[0]: AirPort: Link Down on awdl0. Reason 1 (Unspecified).🈁
Aug  8 19:15:10 MBA2014 kernel[0]: IO80211AWDLPeerManager::doDisable   source [setLinkState]
Aug  8 19:15:10 MBA2014 kernel[0]: ARPT: 30065.337295: wl0: leaveModulePoweredForOffloads: Wi-Fi will turn off.
Aug  8 19:15:10 MBA2014 kernel[0]: AppleThunderboltNHIType2::prePCIWake - power up complete - took 1703 us
Aug  8 19:15:10 MBA2014 kernel[0]: AppleThunderboltGenericHAL::earlyWake - complete - took 0 milliseconds
Aug  8 19:15:10 MBA2014 kernel[0]: AirPort: Link Down on en0. Reason 8 (Disassociated because station leaving).
Aug  8 19:15:10 MBA2014 kernel[0]: en0::IO80211Interface::postMessage bssid changed
Aug  8 19:15:10 MBA2014 kernel[0]: en0: 802.11d country code set to 'X3'.
Aug  8 19:15:10 MBA2014 kernel[0]: en0: Supported channels 1 2 3 4 5 6 7 8 9 10 11 12 13 36 40 44 48 52 56 60 
Aug  8 19:15:11 MBA2014 kernel[0]: AppleCamIn::systemWakeCall - messageType = 0xE0000340
Aug  8 19:15:11 MBA2014 kernel[0]: AppleThunderboltNHIType2::waitForOk2Go2Sx - retries = 3
Aug  8 22:15:11🈁 MBA2014 kernel[0]: Wake reason: EC.SleepTimer (SleepTimer)🈁
Aug  8 22:15:11 MBA2014 kernel[0]: AppleCamIn::systemWakeCall - messageType = 0xE0000340
Aug  8 22:15:11 MBA2014 kernel[0]: AppleCamIn::wakeEventHandlerThread
Aug  8 22:15:11 MBA2014 kernel[0]: Previous sleep cause: 5
Aug  8 22:15:11 MBA2014 kernel[0]: AppleHSSPIController::HandleMessage Device Wake by Host
Aug  8 22:15:11 MBA2014 kernel[0]: AppleThunderboltNHIType2::prePCIWake - power up complete - took 179148 us
Aug  8 22:15:11 MBA2014 kernel[0]: AppleThunderboltGenericHAL::earlyWake - complete - took 1 milliseconds
 これは19時15分09病からスリープを開始し19時15分11秒にスリープが終了したことを示しているのだけれど,その後,電源アダプタを外して机の中にしまっておいたのだが,22時15分11秒,つまりスリープしてから3直後に起き出している.Wake reason: EC.SleepTimerとあるのがそれ.
 この3時間というのは,電源管理のpmset(manipulate power management setting)コマンドで確認できる.

...続きを読む

濁点とMacのファイル名

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/8/9 23:46
 ガラケー使いのオカンから「ありか゛とう゜」といようなメールが来ることがある.逆にどうやって入力したんだろうか.゜は句点(。)の代わりっぽいけれど.

 逆に,Macな人と添付ファイルをやりとりすると,次の様なファイルを受け取ることがある.
ハ゜ラメーターシート.xls
 これは何かのバグなのだろうと長年思っていたのだけれど,これはUnicode的にNormalization Form Canonical Decompressionという規格なのだそうだ.
 濁点・半濁点だけでなく,ウムラウトも含んだこういうものを,「ダイアクリティカルマーク」というそうなのだけれど,MacのHFS+というファイルシステムではこれを採用している.
 平たく言うと「パ」を「ハ」と「゜」に分離して管理するのだそうだ.なぜそれを採用したのかはわからないけれどな.
  
 文字化けしない様に変換するには,nkfにこういうオプションをつければ良いです.
nkf --ic=UTF8-MAC
 でも,Yosemiteだと「ハ゜ラメーターシート」になるけれどEl Capitanだと,へんな変換にならないね.OSが対応したのかnkfが対応したのかわからない...
 OS X 10.10.5のYosemiteにて,/var/log/system.logをウォッチしていたら,大量にログがでていた.大量というのは,頻繁に出ているのもあるけれど,1つのエラーに対するエラー表示行数が多い.

Aug  8 10:59:53 MBA2014.local apsd[77]: Illegal subject name missing 'courier.push.apple.com' (2.5.4.3): ({
            label = "2.5.4.6";
            "localized label" = "2.5.4.6";
            type = string;
            value = US;
        }, {
            label = "2.5.4.8";
            "localized label" = "2.5.4.8";
            type = string;
            value = California;
        }, {
            label = "2.5.4.7";
            "localized label" = "2.5.4.7";
            type = string;
            value = Cupertino;
        }, {
            label = "2.5.4.10";
            "localized label" = "2.5.4.10";
            type = string;
            value = "Apple Inc.";
        }, {
            label = "2.5.4.3";
            "localized label" = "2.5.4.3";
            type = string;
            value = "courier.sandbox.push.apple.com";
        })
 このapsdというのは,Apple Push Notification service daemonの事で「通知センター」.多分,次のようにFirewallで通信が許可されて無いからエラーが出ている模様.

Apple のプッシュ通知が届かない場合
https://support.apple.com/ja-jp/HT203609

 システム環境設定で「通知センター」の中にある不要な通知をオフにしてみた.
これで出無いはずなのだけれど.
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.apsd.plist
 再開させるにはコレ.
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.apsd.plist
 そして止めてみる.まずはプロセス確認.
$ 🆑ps -ef|grep apsd
    0    77     1   0 10:08AM ??         0:01.55 /System/Library/PrivateFrameworks/ApplePushService.framework/apsd🈁
240633758 18110 14561   0 11:13AM ttys004    0:00.00 grep apsd
$
 停止コマンド実行.
$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.apsd.plist🆑
Password:

$
 確認.
$ 🆑ps -ef|grep apsd
240633758 18198 14561   0 11:13AM ttys004    0:00.00 grep apsd

$
 停止した.これで,ログは出なくなるはず.

UCS-2とUTF-8

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/8/2 22:39
 MacのExcel 2011で文字列カウントしていて気付いたのだけれど.VBAやワークシート関数で文字列長を調べるLenとLenBがある.LenBはByte単位.2バイト文字を1文字入れるとLenだと1だがLenBだと2となる.
 半角1文字を設定しても,戻り値が2になるので調べてみたら,WindowsNT/2000/XP、Office2000以降は,UNICODEでもUCS-2エンコードを採用しているとの事.
 このUCS-2だと,半角英数字1文字でも2バイト.なんだかむかし,JIS,EUC,SJISと混沌としていた時代,Unicodeになると文字コード問題を解決するための夢の規格がユニコードで,全ての文字が2バイトで表現される...と大雑把に教えてもらった事がある.それがUCS-2だったのか.

 ちなみに,今一般的になっているUTF-8だと思うけれど,それだと全角文字は3バイトで,半角英数は1文字.
 検証してみる.まずはLANG設定を確認.
MBA13:~ ujpadmin $ env|grep LANG
NLS_LANG=Japanese_Japan.AL32UTF8
LANG=ja_JP.UTF-8
MBA13:~ ujpadmin $
 バイト数をカウント.
MBA13:~ ujpadmin$ echo a > a.txt
MBA13:~ ujpadmin$ wc -c a.txt
2 a.txt
MBA13:~ ujpadmin$
 2バイト.これは改行コードが最後に入っているから.16進数でダンプしてみれば確認出来る.
MBA13:~ ujpadmin$ hexdump a.txt
0000000 61 0a
0000002
MBA13:~ ujpadmin$
 LF(LineFeed)の0aが入っている.次に日本語.
MBA13:~ ujpadmin$ echo あ > あ.txt
MBA13:~ ujpadmin$ wc -c あ.txt
4 あ.txt
MBA13:~ ujpadmin$
 4バイトなので改行コードの1文字を引いて3byteとわかる.

SJISの独自拡張のCP932とか,いろいろな事があったけれど,統一規格としてのユニコード.いまはメーカプラットホーム毎に絵文字を拡張しているから,結局整理すると個性を発揮できないというデメリットを解消するため?差別化するために独自に進むしか無いという所もあるなぁ.

vmstatで日時を表示

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/7/28 23:58
 vmstatコマンドを実行してサーバの負荷状況を見る事ができるけれど,何時何分かわからない.そんな時には,このように.
vmstat 1 | awk '{print strftime("%/%m%d %H:%M:%S"), $0}'
 vmstatの標準出力の前に,日時を表示する.とても便利.
bashを使っていて,思ったようにコマンド履歴が保存されてないなと思う事があるんだけど,ちゃんと調べたらコマンドヒストリは,バッファに入っていて,bashを終了させる時に.bash_historyに書き出されるのだそうです.
 長時間ターミナルを開いていてタイムアウトで切断したような時は,終了処理されてないので消えちゃうんでしょう.

 それで,以下のようなおまじないをしておくと,ほぼリアルタイムに.bash_historyに書き出されます.
export PROMPT_COMMAND='history -a; history -r'
 複数ターミナルを開いていると体系だった参照ができないけれど,そんな事よりはコマンド履歴を他のターミナルでも共有できるメリットがあるね.あと,
 意図せず失わないという事もね.

Pasteコマンドで行を連結する

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/7/28 1:11
 このようなファイルがある.
$ cat list.txt
1
山田
太郎
2
鈴木
二郎
3
真田
秀吉
$
 3行を1行に連結させたい.そんな時に使うのはpasteコマンド.
$ cat list.txt|paste -d, - - -
1,山田,太郎
2,鈴木,二郎
3,真田,秀吉
$
 ハイフンの数だけ連結する.
 この結果をカンマ区切りにしたい派愛は,-dオプションで指定する.
$ cat list.txt|/usr/bin/paste -d, - - -
1,山田,太郎
2,鈴木,二郎
3,真田,秀吉
$
 一応,コマンドパスを確認.
$ which paste
/usr/local/opt/coreutils/libexec/gnubin/paste
$
 Macに最初からインストールされているpasteコマンドを実行.
$ cat list.txt|/usr/bin/paste -d, - - -
1,山田,太郎
2,鈴木,二郎
3,真田,秀吉
$

数字をgrep

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/7/20 21:17
 こんなリストがある.
$ cat list1.txt
1 inu
2 neko
3 nako
4 nuko
5 beko
33 geko
38 tako
6 kako4
7 mako
$
 リストの中から,3を検索.
$ grep 3 list1.txt
3 nako
33 geko
38 tako
$
 すると,3が含まれている全てがリストされる.
 指定した数字文字に限定したい場合,文字列の行頭・行末に着目してみる.後ろにスペースが入っている条件になるので,次のようにgrepすると,ほしい結果になる.
$ grep "^"3" " list1.txt
3 nako
$

改行コードを変数に含める

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/7/12 22:51
 未だに知らないこともたくさんある.いや,世の中知らないことばかりだ.

 こういった,数行の結果を標準出力するコマンドがある.
$ ls -1 /bin|head -n 5
[
bash
cat
chmod
cp
$
 この結果を.意味はないけれど環境変数LSSに入れる.
$ LS5=`ls -1 /bin|head -n 5`
$
 その結果を表示する.
$ echo $LS5
[ bash cat chmod cp
$
 結果が,横一列になっている.これを改行コードを生かした状態にする方法がある.

...続きを読む

ffmpegの対応コーデック一覧の取得

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/7/9 23:36
 フォーマットとコーデックの一覧.
 対応フォーマット.
ffmpeg -formats
File formats:
 D. = Demuxing supported
 .E = Muxing supported
 --
 D  3dostr          3DO STR
  E 3g2             3GP2 (3GPP2 file format)
  E 3gp             3GP (3GPP file format)
 D  4xm             4X Technologies
  E a64             a64 - video for Commodore 64
 〜以下略〜
 コーデック.
ffmpeg -codecs
Codecs:
 D..... = Decoding supported
 .E.... = Encoding supported
 ..V... = Video codec
 ..A... = Audio codec
 ..S... = Subtitle codec
 ...I.. = Intra frame-only codec
 ....L. = Lossy compression
 .....S = Lossless compression
 -------
 D.VI.. 012v                 Uncompressed 4:2:2 10-bit
 D.V.L. 4xm                  4X Movie
 D.VI.S 8bps                 QuickTime 8BPS video
 .EVIL. a64_multi            Multicolor charset for Commodore 64 (encoders: a64multi )
 .EVIL. a64_multi5           Multicolor charset for Commodore 64, extended with 5th color (colram) (encoders: a64multi5 )
 D.V..S aasc                 Autodesk RLE
 D.VIL. aic                  Apple Intermediate Codec
 〜以下略〜
 たくさんありすぎ.何が一般なんだろうね.
 Imagemagickをインストールしてあれば,mogrifyコマンドも入っている.次の様に変換.
MBA13:$ mogrify -quality 100 -geometry 1024x577 *.jpg
MBA13:$
 画像サイズを変換なのだけれど,最高品質にするためにqualityを100にしている.
 動画を作成.
MBA13:$ convert -quality 100 -delay 300  *.jpg test.mpg
MBA13:$
 ここでは1枚を300ms,つまり3秒表示するMPEGファイルを作成.元画像をリサイズしていないとすぐエラーが出る.メモリ不足とかの影響かなぁ.
 作成された動画を確認してみる.
MBA13:$ ffmpeg -i test.mpg
ffmpeg version 3.0.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with Apple LLVM version 7.3.0 (clang-703.0.29)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.0.2 --enable-shared
 --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables
 --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl
 --enable-libx264 --enable-libmp3lame --enable-libxvid --enable-vda
  libavutil      55. 17.103 / 55. 17.103
  libavcodec     57. 24.102 / 57. 24.102
  libavformat    57. 25.100 / 57. 25.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 31.100 /  6. 31.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
Input #0, mpeg, from 'test.mpg':
  Duration: 00:01:59.92, start: 0.540000, bitrate: 368 kb/s
    Stream #0:0[0x1e0]: Video: mpeg1video, yuv420p(tv), 1024x577 
[SAR 1:1 DAR 1024:577], 104857 kb/s, 25 fps, 25 tbr, 90k tbn, 25 tbc
At least one output file must be specified
MBA13:$
 情報にノイズがおおいけれど,最後の5行が動画ファイルの情報.MPEG1ビデオが作成されている事がわかります.音声なし.

NTP

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/7/9 2:12
 Macはずいぶん前から独自のNTPサーバを立ち上げてOSはそこに接続する様にできている.なので普段時間合わせなんて考えた事なんて無いのだけれど,Firewallで接続許可されてない何て事もある.
 気がついたら,時間がかなりずれているかもしれないのだけれど,たまに以下のURLにアクセスすれば時間があっているかどうか簡単に確認できます.

情報通信研究機構
https://www.nict.go.jp/JST/JST5.html

 これ,なかなか興味深いね.

公開NTPサービスについてご説明します
http://www2.nict.go.jp/aeri/sts/tsp/PubNtp/

午前12時,12:00PM

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2016/7/7 1:24
 受け取った文字列に"PM"が入っていたら,12時間加算するというロジックがあって,エラーになっていたので直すというミッション.
 元のデータは12時間表記で,変換後は24時間表記.Excelとかあれば簡単なのだけれど,bashなので文字列を取り出して再構成する感じ.
 それでロジック的には12:00 PMと文字列変数に代入されるけれど,PMと入っているので単純に12時間足すと24:00となる.24時00分は便宜的には存在するけれど実際にはないのでエラー.
 そもそも,お昼の12時は日本だと「午前12時」なのだけれど,英米だと12:00 PMなのだと初めてちゃんと把握した.

お昼の12時のことを「正午」というけれど,それは午前12時で,12時1分は午後0時1分.夜中の12時は,あまり使わないけれど「正子」といい,午後12時で12:0AM.同じく真夜中の12時1分は午前0時1分が正解.
 普段生活していて「昼の12時」「午前12時」とはいうけれど,「午後12時」とは言わないね.なんとなく「午後一番(ごごいち)」というと,13時あたりを示す言葉だからそっちは合っているのか.

 つまりロジック的には文字列を取り出して"PM"だったら12を加算すればよいけれど,合計値が24だったら12にすれば良い.

$ date -d '2016/7/6 12:00:00' "+%Y/%m/%d %H:%M:%S %p" 
2016/07/06 12:00:00 PM
$

増えだしたら一気に

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2015/5/28 1:12
 ディスク使用量のアラートは,しきい値をどこに設定するか,またその頻度をどうするかというのがある.特にあまり監視コストをかけられないような用途の場合.


 早期発見のためには高頻度監視なんだけれど,そうなると通知が頻発すぎて難しい.余裕あるよう70%を閾値とした場合に,一旦71%になるとそれを解消するまではずっとアラームが上がり続ける.そしてオオカミ少年のようになり,アラーム無視され,重大事故の時に発見できなくなる.



 このサーバの場合,目算で95GB程度で安定していたにもかかわらず,とある障害でエラーログを大量に吐き出し始めたら,50GBほどの大きなログファイルが生成され,最大容量の150GBとなってディスクフルになってしまった例.
 わかってしまえば「ログファイルだった」のだけれど,昔のUNIXのようにファイルシステムのパーティションを複数分割しないから,どのディレクトリ,ファイルが増えたのかは手探りで探す必要がある.LinuxやMacOS Xだとfindコマンドだし,WindowsだとExplorerの検索オプションにファイルサイズを指定するところがある.

急にディスクの空きが無くなる

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2015/5/8 18:32
 MacBook Airのディスク空き容量が急激に減る現象が発生.調べると以下のログ領域にファイルがたくさんできている.
/private/var/log/DiagnosticMessages
/private/var/log/asl
 みていると,mds,mdworkerが暴走状態.実際には何かしらのきっかけでaslやDiagnosticMessages以下のログファイルが肥大化してそれをきっかけにmdworkerがCPUリソースを食い処理遅延が発生しエラーを吐き,syslogdにログを転送してそのログをmdworkerが読み込んで処理遅延・・・というような状態.

 中身を見てもバイナリファイルだったので,サクッとファイルを消して再起動したら復旧.
 タイトルのままです.Windowsのバッチプログラム.

@echo off
set YYYYMMDD=%date:~-10,4%%date:~-5,2%%date:~-2,2%
set time2=%time: =0%
set HHMMSS=%time2:~0,2%%time2:~3,2%%time2:~6,2%

echo %YYYYMMDD%
echo %HHMMSS%

 30年くらい前に,YYYYMMDDを返すだけのCプログラムをmakeした事があるんだがな.~を使って文字列を抽出できるようになっていたとは・・・

MacOS Xでコマンドで日時を合わせる その2

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2011/9/4 23:07
 MacOS Xで,NTPDが動いているのに,正しく時間があわない場合.以下の様にntp.confを編集して,サービスを再起動してみる.
ivory:root# cat /etc/ntp.conf
#server ntp.nict.jp
server time.apple.com iburst
ivory:root#
 iburstを付けるのがミソ.
ivory:root# ntpd -f /var/run/ntp.drift -p /var/run/ntpd.pid -c /etc/ntp.conf
ivory:root#
 サービスを再起動してみる.
ivory:root# sudo SystemStarter -d restart "Network Time"
SystemStarter[13235]: Found item: Apache

〜略〜

SystemStarter[13235]: Found item: NetworkTime

〜略〜

SystemStarter[13235]: Running command (13236): /System/Library/Sta
rtupItems/NetworkTime/NetworkTime restart
Stopping network time synchronization
Starting network time synchronization
Looking for host time.apple.com and service ntp
host found : time.apple.com
SystemStarter[13235]: Finished network time synchronization (13236)
SystemStarter[13235]: none left
ivory:root#
 これで暫く様子見で. これはPowerBook G4 667MHzにインストールしたMacOS X 10.4 Tigerでの事.そろそろCMOSの電池が無いので狂いまくってるのかな.
 先週
Socket is not connected: core_output_filter: writing data to the network
 というエラーがでたので
EnableMMAP off
EnableSendfile off
 を入れてみたら,なんと!
 (32)Broken pipe: core_output_filter: writing data to the network
 というエラーが出る様に変更されてました.これもまた情報があまり無い.別このエラーがでていても不具合は無いので放置プレイみたいだ.
 Apacheのエラーログを見ていたら,こんなログが書かれていた.
Socket is not connected: core_output_filter: writing data to the network
 ファイルシステムをNFS等でマウントしている時にでるエラーらしいけれど,使ってないので関係ないとおもうのだが...

 ネットで調べたらhttpd.confに記載してあるEnableMMAPとEnableSendfileが関係するようなので,まずは確認してみる.
#
# EnableMMAP and EnableSendfile: On systems that support it,
# memory-mapping or the sendfile syscall is used to deliver
# files.  This usually improves server performance, but must
# be turned off when serving from networked-mounted
# filesystems or if support for these functions is otherwise
# broken on your system.
#
#EnableMMAP off
#EnableSendfile off
 コメントアウトされているので,offが明示されてないのでどっちなのか解らんな. まずは,コメントを外してoffを有効化してApacheを再起動してみる.

 まぁ,またしばらくしてから,ログにかき出されてないか効果を確認してみよう.

lsコマンドで表示される日付形式を変更する

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2011/8/24 18:08
 普通に,ls -laと入力すると,MM DD YYYYとMM DD hh:mmの形式になる.昨年以前ならYYYYで,今年なら時分が表示されるという事.

 MacOS Xで,これを常にYYYYで表示したいときは,
ls -alT
 と入力すれば良いです.

ltrace/strace

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2011/4/19 23:00
ltrace プロセスが使っているライブラリを出すツール。実行中のプロセスも可能。 
strace プロセスが呼びだしたシステムコールを表示する。

MacOS Xでコマンドで日時を合わせる

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2011/4/1 1:13
 訳あってNTPが使えないサーバで,日時が狂ってしまった時に合わせる方法.
 Linuxだとdate -s 201104010000で合わせるけれど,MacOS Xだとdate -uを使います.

 このような感じ.
ivory:/Users/tiger root# date -u 033116082011
Thu Mar 31 16:08:00 GMT 2011
ivory:/Users/tiger root# date
Fri Apr  1 01:08:02 JST 2011
ivory:/Users/tiger root#
フォーマットは,
date -u 月日時分年 です.
つまり,
date -u 033116082011
は,3月31日16時8分 2011年という意味なのですが,設定するとGMTなので,JSTは-9時間なのでこの様になります.
Fri Apr  1 01:08:02 JST 2011

sedで連続する先頭文字の置き換え

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2011/2/22 21:07
sed 's/^\.*//g'

......AAA
....BBB
.......CCC
を,

.AAA
.BBB
.CCC
にする.

curlコマンドでレジュームする

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2010/11/16 21:47
 curlコマンドでダウンロード行っていてタイムアウト( curl: (28) FTP response timeout )などで中断する事があります.
 ダウンロードした部分の続きから再ダウンロード(レジューム,リジューム)したい場合がありますが,次のサンプルの様に実行します.

●通常のダウンロード

curl -O ftp://xxxx/archive.gz

●レジュームする場合

curl -C - -o archive.gz http://xxxx/archive.gz

 ダウンロードが再開すると,"** Resuming transfer from byte position XXXX"というような感じで残りのデータ量が表示されます.
 小さいテキストファイルだったらテキストエディタのmiを使って変換できますが,1MBを超えると動作が遅くなって使い物にならなくなります. かといってiconvを使うと微妙にエラーがでて困るので,そんな時に見つけたのが,このCharcoというツール.


 返還元のファイルを指定し入力文字コード,出力文字コードを指定,出力先のファイルを指定すると変換が始まり保存されます.
 今回4MBのテキストファイルの変換が問題なく実行できました.

 変換形式にUTF-8やEUCはありますが,SJISやShift-JISの表記はありません.ですが,DOSJapaneseで対応できました.

ダウンロードはこちら.
http://www.marblesoftware.com/Marble_Software/Charco.html

SNMPでネットワークトラフィックを取得する

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2010/3/25 23:54
 ネットワークトラフィックを取得するには,つぎのOIDを使います.

IF-MIB::ifInOctets .1.3.6.1.2.1.2.2.1.10.x
IF-MIB::ifOutOctets .1.3.6.1.2.1.2.2.1.16.x

 最後のxはインタフェイス番号を入れます.

snmpwalkコマンドで実行するとこんな感じ.
ivory:/Users/ujpadmin root#  snmpwalk -v 2c -c public localhost "IF-MIB::ifInOctets.4"
IF-MIB::ifInOctets.4 = Counter32: 571539656
ivory:/Users/ujpadmin
 コミュニティ名はpublicにしていますが,各自で変更してください.

Canonicalizable

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2010/2/3 20:34
Webサイトの規定のドキュメントファイル名(index.htmlとか)がついたURLがあるかチェックできます.

Canonicalizable
http://www.nickgerner.com/canonicalizable/

問題無いか何かしらのレスポンスがあれば,次の様に表示されます.

Everything looks good so far!

うちのサイトは,ちょっと問題ありですな.

Red Hat ES 3でaudit.dのログを消す

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2010/1/21 16:52
 Red Hat ES3で運営しているサーバで,messagesファイルにauditdのエラーが書き出されました.
auditd[xxxx]: output error

 auditdはシステム監査機能のデーモンですが,ディスクの空き容量が20%を切るまでログファイルを作成し続けます.
 dfコマンドで空き容量を確認したら空き容量が85%だったので,これが原因でしょう.
/var/log/audit.dを確認すると,大量のデータが保存されていました.

...続きを読む

 メールサーバがハングアップして,メールが届かなくなった. メーラからメールの接続は問題無いので気づかないが,しばらくメールが届かないので不審に思う.

 メールサーバはpostfixで動いているので,mail.logをみると,次の様なエラーが.
deferred (delivery temporarily suspended: connect to 127.0.0.1[127.0.0.1]:10024 Connection refused
 コネクションが拒否されているのはわかるのですが,このエラーで探しても情報が無いので苦労しました.
 10024というのはamavisdへの接続ポート.TELNETしても繋がらない. amavisdは,amavisd-newの事で,ウイルススキャナへのパイプを行うデーモンなのですが,そこに接続できてなかった.
 amavisdが起動してなかったので,手動で起動させてみたら,こんなエラー.
sh-3.2# /usr/bin/amavisd
  The value of variable $myhostname is "juno", but should have been
  a fully qualified domain name; perhaps uname(3) did not provide such.
  You must explicitly assign a FQDN of this host to variable $myhostname
  in amavisd.conf, or fix what uname(3) provides as a host's network name!
sh-3.2#
 ホスト名がjunoってなってるけどFQDNで解決できないから起動できないという話.

 以前のMacOS X Serverではホスト名が安定しないという不具合?があって,固定にしていました.システム環境設定から設定できるホスト名じゃなくて,/etc/hostconfigを編集します.
 デフォルトではこの様になっています.
sh-3.2# cat /etc/hostconfig|grep HOSTNAME
HOSTNAME=juno
sh-3.2
 これを次の様にデフォルトに戻しました.
sh-3.2# cat /etc/hostconfig|grep HOSTNAME
HOSTNAME=-AUTOMATIC-
sh-3.2
 変更後,OSを再起動して問題が解消しました. しかし,今更なぜこの現象が露呈したのかが不明です.

RTX1100でのDHCPの手動リリース

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2009/12/22 12:30
 RTX1100/RTX1200等でDHCP運用している時に,リース(貸し出し)されているIPアドレスをリリース(解放)するには,次の様に実行.

 以下のコマンドでリース情報を確認.

show status dhcp

 リリースする場合は,次のコマンドで.

dhcp manual release IPアドレス

 リリースされたかどうかは,再度ステータスを確認.

show status dhcp

以上.

WindowsでMD5やSHA1を検証する

カテゴリ : 
ハウツー
ブロガー : 
ujpblog 2009/12/10 12:41
 ダウンロードファイルの誤り検出の為に用いられるMD5やSHA1ですが,Windowsで検証するツールがマイクロソフトから提供されていました.

Availability and description of the File Checksum Integrity Verifier utility
http://support.microsoft.com/default.aspx?scid=kb;en-us;841290

 ダウンロードしたファイルは自己展開のアーカイブなので,実行するとfciv.exeファイルが展開されます.
 fciv.exeファイルにオプションを付けて実行すると,md5値等が取り出せます.

fciv.exe -md5 ファイル
fciv.exe -sha1 ファイル

広告スペース
Google