シェルを使ってifconfigの「eth0」の部分だけを取得
プログラム内でネットワークデバイス(インターフェース)名を使用したい.
Ubuntu 14.04 LTSまでは有線はeth0を指定してあげれば良かったが,Ubuntu 15.10からは名前がenp2s0のような名前に変更されるので,シェルでその部分だけを取得しようと思う.
ifconfig | awk '{print $1}' | awk NR==1
だけで良い.
ifconfigで出力されたものを,awkで1列目だけを表示.その後awkで1行目を指定すれば出来る.
ただ,VM環境などのせいで有線の前にvmnetとかが入っている場合は,grep -vとかで弾けばいいんじゃないかと思う.
CentOSでifconfigを行うと,
enp2s0:
という感じに,最後にコロンが付いてしまうので,これもシェルで取ってしまう.
ifconfig | awk '{print $1}' | awk NR==1 | sed -e "s/:/\ /g"
基本的にはUbuntuでもこのコマンドを使用してやれば,エラーは吐かれないので,Ubuntu,Cent問わずシェルを実行する事ができる.
PHPで配列を連想配列に入れる
例えば、下記のような要素を持つ配列があるとする。
$name[5] = {"Taro", "Jiro", "Saburo", "Shiro", "Goro"}; $hegith[5] = {"150", "170","180", "140", "175"};
この配列を連想配列に使用したい場合は、
for($i = 0; $i < count($name); $i++){ $person[$i] = array( "name" => "{$name[$i]}", "height" => "{$height[$i]}" ); }
という感じに書けば良い。
[追記] ファイル更新監視用ライブラリについてのメモ
ファイル変更監視用のライブラリについてのメモ
watchdog(watchmedo)は,ローカルのファイルの変更を検知するには十分
しかし,NFSへの対応はしていないような気がする.
ただ,これはログが非常に見やすいので,わかりやすい.
表示例:
kosuke@~/Desktop : watchmedo log --recursive --patterns "*.txt;*.png" ./ on_created(self=<watchdog.tricks.LoggerTrick object at 0x7f424aaea208>, event=<FileCreatedEvent: src_path='./test.txt'>) on_modified(self=<watchdog.tricks.LoggerTrick object at 0x7f424aaea208>, event=<FileModifiedEvent: src_path='./test.txt'>)
pyinotifyは,ファイルの変更だけではなく,ターミナル上でcd /Desktopとかした時のコマンドでさえも検知してくれる.
しかし,1つのファイルを作成した場合だと,それだけで30行ぐらいのログが出てくるのが難点.
ログに関しても,今回作成したファイルだけではなく,既にそのディレクトリにあるファイルまでも表示をしているようで,非常に見づらい.
また,これもNFSに対応していない.
表示例:
kosuke@~/Desktop : python3 -m pyinotify -v ~/Desktop/ [2017-12-27 02:39:12,829 pyinotify DEBUG] Event queue size: 128 [2017-12-27 02:39:12,829 pyinotify DEBUG] <_RawEvent cookie=0 mask=0x100 name=test.txt wd=1 > [2017-12-27 02:39:12,830 pyinotify DEBUG] <_RawEvent cookie=0 mask=0x20 name=test.txt wd=1 > [2017-12-27 02:39:12,830 pyinotify DEBUG] <_RawEvent cookie=0 mask=0x4 name=test.txt wd=1 > [2017-12-27 02:39:12,830 pyinotify DEBUG] <_RawEvent cookie=0 mask=0x8 name=test.txt wd=1 > <Event dir=False mask=0x100 maskname=IN_CREATE name=test.txt path=/home/kosuke/Desktop pathname=/home/kosuke/Desktop/test.txt wd=1 > <Event dir=False mask=0x20 maskname=IN_OPEN name=test.txt path=/home/kosuke/Desktop pathname=/home/kosuke/Desktop/test.txt wd=1 > <Event dir=False mask=0x4 maskname=IN_ATTRIB name=test.txt path=/home/kosuke/Desktop pathname=/home/kosuke/Desktop/test.txt wd=1 > <Event dir=False mask=0x8 maskname=IN_CLOSE_WRITE name=test.txt path=/home/kosuke/Desktop pathname=/home/kosuke/Desktop/test.txt wd=1 >
MacFSEventsの場合は,gitを見ると,build failingとなっていたので試していない.
他に,ファイル更新監視用ライブラリがあれば試して追加する.
----追記--- 2018/02/19 ----
PythonでNFSのファイル変更を検知するには,
import os import time PATH = '/mnt/nfs/AAA' while True: if os.path.exists(PATH): break time.sleep(5)
と,してやればいいです.
/mnt/nfs内にAAAというファイルが作成されるまで,5秒ごとにファイルのチェックを行っています.
もし,ファイルが検知されたらbreakする,という流れです.