スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

cronで実行するプログラムに引数としてdateコマンドで日付を渡す

cronで実行するものに日付を引数で与えたいときには

program_path `date '+\%Y\%m\%d'`

みたいに「%」を「\」でescapeする。

これでめでたくYYYYMMDDを渡せるわけだけど、RHEL ES3だと渡ってくる値が

\YYYY\MM\DD

になってしまう…。

じゃあ「\」無しでいけるかと言えばそれは無理っぽい。どうしたもんか。

結局program側で渡ってきた「\」を除去する処理を入れた。
スポンサーサイト

まとめて一括拡張子変換

たとえばあるディレクトリ配下の.phpファイルを.htmlに変える場合(サブディレクトリのファイル含む)

# find . -type f -name "*.php" -print0 | while read -r -d '' file; do mv "$file" "${file%%.php}.html"; done

iproute2のポリシールーティングで通信を受けたNICによってルーティングを変える

下の図みたいな構成でデフォルトゲートウェイはR2なんだけどeth0で通信を受けた場合はR1にルーティングしたいという場合、iproute2で複数ルーティングテーブルを使うことによって実現する。

iproute2

■追加するルーティングテーブルのIDと名前

【/etc/iproute2/rt_tables】

追記↓

100 r1e

■デフォルトゲートウェイの設定

【/etc/sysconfig/network-scripts/ifcfg-eth1】

追記↓

GATEWAY=10.2.2.1

■eth0から送出のルーティング設定

【/etc/sysconfig/network-scripts/route-eth0】

10.1.1.0/24 dev eth0 src 10.1.1.2 table r1e
default via 10.1.1.1 table r1e

【/etc/sysconfig/network-scripts/rule-eth0】

from 10.1.1.2 table r1e

■反映

# /etc/init.d/network restart

通常のstaticルーティングと組み合わせても大丈夫で、例えば、10.3.3.0/24宛てはeth0から送出してネクストホップ10.1.1.1みたいなルーティングを追加するならroute-eth0先頭に

10.3.3.0/24 via 10.1.1.1

を追記すればいい。

■ルーティングテーブルの一覧

# ip rule

0: from all lookup local
32765: from 10.1.1.2 lookup r1e
32766: from all lookup main
32767: from all lookup default

一番左が優先度(小さい方が優先)、一番右がテーブル名

■各ルーティングテーブルの内容

# ip route show table テーブル名

今回追加したテーブルの内容は

# ip route show table r1e

10.1.1.0/24 dev eth0 scope link src 10.1.1.2
default via 10.1.1.1 dev eth0

宛先によって送信元IPアドレスをNATする

iptablesを使う。

例えば宛先が10.1.0.0/16だったら送信元IPアドレスを10.2.0.1にNATする場合(ここではパケットフィルタは使っていない)

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o eth0 -d 10.1.0.0/16 -j SNAT --to-source 10.2.0.1
COMMIT

解説はこう

##### filterテーブル #####
*filter
##### デフォルトのポリシー(全許可)#####
##### [0:0]はiptables再起動時のパケットカウント:バイトカウント #####
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
##### 以上内容で登録 #####
COMMIT

##### natテーブル #####
*nat
##### デフォルトのポリシー#####
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
##### 送出インターフェース eth0で宛先アドレスが10.1.0.0/16なら送信元アドレスを10.2.0.1にNATする #####
-A POSTROUTING -o eth0 -d 10.1.0.0/16 -j SNAT --to-source 10.2.0.1
##### 以上内容で登録 #####
COMMIT

Scientific Linux 6.1からyumのリポジトリの分け方が変わったらしい

http://jfut.integ.jp/2011/07/29/scientific-linux-61-yumrepositories/

ざっくり言うとこんな感じになるのか(debuginfo、testing、sourceとかは略)↓
update
  ├─ sl
  │
  ├─ sl-security
  │  旧マイナーバージョンにもupdateがリリースされる。
  └─ sl-fastbugs
     最新バージョンにしかupdateがリリースされない。

fastbugsリポジトリは標準で入ってないので
yumでyum-conf-sl-otherをインストールする

# yum -y install yum-conf-sl-other

インストールしてもデフォルトでfastbugsは有効じゃないので

# vi /etc/yum.repos.d/sl-other.repo

[sl-fastbugs]
セクションで
enabled=1
に変更。

Template Designed by DW99

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。