例によって、備忘録。CentOS 5系にて
※ わかりにくい箇所を書き直した 2015.10.13
uuencodeが入ってなければInstall
$ sudo yum install sharutils
mailコマンドでメールが送信できる前提での、
動作サンプル:本文+添付ファイル
$ (echo "mail_body"; uuencode file_path file_name) | mail -s 'mail_title' mail_address
見にくいので、ちょっと補足すると、
mail_body : 本文
file_path : 添付するファイルのpath
file_name : 添付ファイル名
mail_title : メールの件名
mail_address : 宛先メールアドレス(to)
ちなみに、日本語とか文字化けするので、
mailコマンドに渡す前に、nkf -j をパイプで通すとよい。
2013年4月18日木曜日
2013年4月16日火曜日
シェルスクリプトで自身のフルパスを取得
T/Oです。
いっつも忘れるので。
[bash]
#!/bin/sh
hoge=$(cd `dirname $0`; pwd)/`basename $0`
echo $hoge
[/bash]
こんな感じで。
いっつも忘れるので。
[bash]
#!/bin/sh
hoge=$(cd `dirname $0`; pwd)/`basename $0`
echo $hoge
[/bash]
こんな感じで。
2013年4月7日日曜日
スタンドアローンで動作する祝日判定スクリプト
タイトルどおりなんですが、仕事で必要なので作ってみました。(ついでに社内のレポートもあったので)。
でも、最近仕事が忙しくて、悲しいかな業務時間に作業してないので、せっかくなのでブログにも置いときます。
社内のレポートは業務時間を使ってもいいことになっているので、有難い制度なんですけどねー。
日本の祝日を判定したい
スタンドアローンということで、何らかの元データをローカルに保持しないといかんわけで、今回はGoogle カレンダーのAPIを利用しました。
詳細は、Google Calendar API v2 Atom Referenceを。
[python]
#!/usr/bin/env python
from xml.dom.minidom import parse
import sys
import re
def get_parse(fileName):
try:
obj = parse(fileName)
except IOError:
obj = 0
return obj
def get_arg2(arg2):
pattern = re.compile("^\d{4}-\d{2}-\d{2}$")
matched = pattern.search(arg2)
if matched:
argDate = arg2
else:
argDate = 0
return argDate
def main():
fileName=sys.argv[1]
obj = get_parse(fileName)
if obj == 0:
print "file not found"
return 1
argDate = get_arg2(sys.argv[2])
if argDate == 0:
print "argument is unjust. ex)2013-01-01"
return 1
obj_list = obj.getElementsByTagName("gd:when")
for i in obj_list:
if argDate == i.getAttribute("startTime"):
return 0
print "unmatch holiday"
return 2
if __name__=='__main__':
sys.exit(main())
[/python]
[bash]
shase$ ./holidayCheck.py japanHoriday.xml 2013-10-15
unmatch holiday
shase$ ./holidayCheck.py japanHoriday.xml 2013-05-05
shase$ echo $?
0
[/bash]
でも、最近仕事が忙しくて、悲しいかな業務時間に作業してないので、せっかくなのでブログにも置いときます。
社内のレポートは業務時間を使ってもいいことになっているので、有難い制度なんですけどねー。
やりたいこと
日本の祝日を判定したい
1.元データ
スタンドアローンということで、何らかの元データをローカルに保持しないといかんわけで、今回はGoogle カレンダーのAPIを利用しました。
今回利用したXMLリクエスト
http://www.google.com/calendar/feeds/outid3el0qkcrsuf89fltf7a4qbacgt9@import.calendar.google.com/public/full-noattendees?start-min=2013-01-01&start-max=2013-12-31
リクエストパラメータの意味
詳細は、Google Calendar API v2 Atom Referenceを。
outid3el0qkcrsuf89fltf7a4qbacgt9@import.calendar.google.com | 比較的信頼度が高いとされる、mozillaプロジェクトの祝日一覧(mozzila Calendar Project) | |
full-noattendees | full版からgg:whoを抜いたもの(今回は不要なので) | |
start-min=2013-01-01 | 期間の始まり | |
start-max=2014-01-31 | 期間の終わり |
2.実際のコード
[python]
#!/usr/bin/env python
from xml.dom.minidom import parse
import sys
import re
def get_parse(fileName):
try:
obj = parse(fileName)
except IOError:
obj = 0
return obj
def get_arg2(arg2):
pattern = re.compile("^\d{4}-\d{2}-\d{2}$")
matched = pattern.search(arg2)
if matched:
argDate = arg2
else:
argDate = 0
return argDate
def main():
fileName=sys.argv[1]
obj = get_parse(fileName)
if obj == 0:
print "file not found"
return 1
argDate = get_arg2(sys.argv[2])
if argDate == 0:
print "argument is unjust. ex)2013-01-01"
return 1
obj_list = obj.getElementsByTagName("gd:when")
for i in obj_list:
if argDate == i.getAttribute("startTime"):
return 0
print "unmatch holiday"
return 2
if __name__=='__main__':
sys.exit(main())
[/python]
3.ざっくり仕様
- 第一引数に元xmlのファイルパス
- 第二引数に確認したい日付をyyyy-MM-ddにて渡す
- 祝日であれば、0、祝日でない場合は2、その他のエラーは1を返す
4.動作イメージ
[bash]
shase$ ./holidayCheck.py japanHoriday.xml 2013-10-15
unmatch holiday
shase$ ./holidayCheck.py japanHoriday.xml 2013-05-05
shase$ echo $?
0
[/bash]
2013年3月26日火曜日
Linuxでのhostsの反映
前に、macでのhostsの変更の反映メモを書いたけど、Linuxでも似たような話があるので、メモ代わりに。
Linuxはリゾルバキャッシュがありましぇーん、とかよく(古い)記事とかであったりしますが、最近のディストロだとだいたい、nscdっていうネームサービスキャッシュデーモンたんが動いており、時々、hostsやらpasswdやらの変更が反映されないみたいな悪さをしてくれやがります。(LDAP関連のトラブルでもよくでてくるんじゃないかな?)
余談だけど、最近のFreeBSDでも動いてるらしい(余談おわり)。
詳細は「man nscd」してもらえればいいんですが、とりあえずhostsのキャッシュをクリアしたいとき(nscdの再起動:nscd restartでもいけるけど)。
とかすればおk
Linuxはリゾルバキャッシュがありましぇーん、とかよく(古い)記事とかであったりしますが、最近のディストロだとだいたい、nscdっていうネームサービスキャッシュデーモンたんが動いており、時々、hostsやらpasswdやらの変更が反映されないみたいな悪さをしてくれやがります。(LDAP関連のトラブルでもよくでてくるんじゃないかな?)
余談だけど、最近のFreeBSDでも動いてるらしい(余談おわり)。
詳細は「man nscd」してもらえればいいんですが、とりあえずhostsのキャッシュをクリアしたいとき(nscdの再起動:nscd restartでもいけるけど)。
/usr/sbin/nscd -i hosts
とかすればおk
2013年3月24日日曜日
macでipfwを使って特定ホストに対する通信を止めたい
環境はMacOS X Lion
denyのところに止めたい宛先アドレスを入れよう
以下、設定シェルの例
細かいルールはmanでも見てね(・ω<)
ipfwのチートシート
- sudo ipfw list
- ルールの表示
- sudo ipfw delete "number"
- ルールの削除
- sudo ipfw add "rule"
- ルールの追加"rule"のところはmanでもみてくれ
- sudo ipfw show
- ルールとパケットの表示
- sudo ipfw -f flush
- 既存の設定のflush
で、特定ホストに対する通信のblock
denyのところに止めたい宛先アドレスを入れよう
以下、設定シェルの例
#!/bin/sh
ipfwcmd="ipfw"
add="$ipfwcmd -q add"
# flush old rules
$ipfwcmd -f flush
$add deny tcp from me to xxx.xxx.xxx.xxx
$add deny icmp from me to xxx.xxx.xxx.xxx
細かいルールはmanでも見てね(・ω<)
2013年3月23日土曜日
2013年2月16日土曜日
mavenプロジェクトでのjvmのバージョン指定してるトコ
mavenのサイトに書いてるけど。
http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html
maven-compiler-pluginのトコで指定だってさ。下の例はjdk1.4を指定してる様子。
[xml]
[...]
[...]
org.apache.maven.plugins
maven-compiler-plugin
3.0
1.4
[...]
[...]
[/xml]
http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html
maven-compiler-pluginのトコで指定だってさ。下の例はjdk1.4を指定してる様子。
[xml]
[...]
[...]
[...]
[...]
[/xml]
登録:
投稿 (Atom)