forとかwhileループでnohup

普段Linuxをメインで使っていると、bashで、forとかwhileループをバシバシ使って処理することがあると思う。
直ぐ終わる処理だと、特に気にしないのだが、大量のデカイファイルをコピーするなど
時間のかかる処理だと、バックグラウンドで実行したい時があるが、普通にnohup使うと
エラーになって使えない。

  • バックグラウド実行したいループ処理

 

 

 

単純に頭にnohupを付けて行末に&だと上手くいかず
以下のようにしたら上手く言った。

 

 

 

  • bachの-cオプションに処理したい内容をシングルクォート(‘)で渡す
  • 変数はダブルクォート(“)で囲む

と言った感じ

【続】シェルスクリプトで、アルファベット一覧を使いたい時

前にシェルスクリプトでアルファベット一覧を出力する方法を書いたが、今日もっと驚異的に簡単な方法を知ってしまった。

ブレース展開というらしい。

これだけ。前回のは何だったのかと悲しくなるくらい簡単だった。

このブレース展開、(,)カンマ区切りだと見たことある気がするけど、(.)ピリオド2つで範囲指定出来るとは驚き。

しかも隣接する文字がある場合は、そっちも展開してくれるのでIPアドレスの範囲指定なんかでも超便利。

うーん。無知って罪ですね。

pythonでお手軽httpサーバ

ふとファイルのやり取りを簡単にWEBで渡せたらいいのにな。と思うことがある。最近のネットワーク機器だと、httpでのダウンロードに対応してたりするので、PC側にあるファームウェアをhttpで簡単に公開出来たら便利。

そんなときには、pythonさんのお力を借りる。

公開したいディレクトリで、

ってやるだけ。デフォルトでは、8000番ポートで公開される。

http://localhost:8000

ってやれば、カレントディレクトリのファイル一覧が表示される。

ポートを変更したい場合は、引数にポート番号を渡してあげるだけ。

あー。とてつもなく便利

なお当然ですが、閉じた環境でのみご利用ください。

URLデコードをワンライナー(one liner)で

wordpressのパーマリンクをタイトルにしてしまった関係で、apacheのログがURLエンコードされた状態で出力され非常に可読性が悪い。

そんなに気にしてなかったが、やっぱりどの記事を見てるのかわからないので、簡単なワンライナー無いかなと調べた。

ワンライナーならperlだろうと思っていたが、簡単そうで行き着いたのは、rubyだった。

以下

ruby簡単だけど覚えられるか・・・

 

さらに調べると、nkfが対応していた。

メッチャ簡単。

これなら覚えられる。

 

因みに、perl

意外と簡単。

 

折角なのでpython

 

うーん。まー入っていればnkf一択ですね。

中国からの通信を他サーバに誘導

前回中国からの通信をiptablesで全ブロックする方法を書いたが、それじゃあんまりだということで

中国からの接続は、他のサーバを見てもらえばいいんじゃね。という発想になった。

bindのview機能は、接続元のIPによって返すレコードを変える機能だが、普通は社内と社外とで切り替えるために使われていると思う。

今回このview機能で、中国の方には、他に用意したサーバをご利用いただくという方針を考えてみた。

ただ、問題はある。

  • 別途WEBサーバの用意が必須。
    中国の方々専用。本番WEBで動的処理とかやってたら、そういったものは無くし静的なページにすればいいと思う。
  • DNSはセカンダリも管理してること必須。
    キャリアとかのセカンダリだと、外部向けに公開されているレコードだけ同期されるので
    細かいviewの設定とかは無理。

ということで、実現できる環境は少ないとは思うが、view内に記述する match-clients 形式で、作ってみた。

中国用match-clients (cn-match-client.txt)

韓国用match-clients (kr-match-client.txt)

毎日更新 (2015年以降更新されておりません)

別途用意するサーバでは、ガチガチなセキュリティが普通だと思うけど、あえて脆弱にしてハニーポット的な使い方しても面白いと思う。

まー。まず実現できる環境は少ないと思うけど。。。

linuxで中国からの通信を遮断

ニュースを見ていたら、9月18日は、中国からのサイバー攻撃が増えるらしい。

参考

理由は歴史的な背景にあるようだが、システム管理屋としては、攻撃に対しては何らかの防御策を準備しなくてはならない。

理想は全てのシステムを、脆弱性など無い万全のものにしておくことだが、なかなかそんな理想なんて言ってられない。

ということで、手っ取り早くやるとなると、中国からの通信をブロックしてしまえばいいんじゃん。という安易な考え。

国別のIPアドレス割り当て情報は、apnicのサイトでわかるので、そちらを元にiptablesでブロックするようにした。

実際に攻撃を受けて、どうしょうもない時に、以下のファイルをダウンロードして、rootで実行

中国フィルタ用iptables(cn-filter.sh)

毎日更新 (2015年以降更新しておりません)

ダウンロードして、以下のように実行

ファイルの中身

有無を言わさずINPUTの一番目のポリシーに差し込むので、どんな環境でも使えるはず。

一応iptablesを設定するので、出来ればリモートじゃなくコンソール画面で!

最悪通信出来なかった場合を考え、cronで数分後に無効にする設定もおすすめ。

コマンドで入れ込むので、保存はされません。起動時に有効にしたい場合は、各OSの設定にしたがってください。

一度作れば簡単だったので、韓国版も

韓国フィルタ用iptables(kr-filter.sh)

linuxでUSB LANカード

2014/3/7追記 こいつは壊れました、こっちがおすすめです。

検証や、環境構築で自分のPCに追加のNICが欲しくなったので、新規で購入してみた。今更PCI-EのNIC買うのもアレだし、使い勝手の良いUSBタイプで選定することにした。

色々と調べてみると、USB3.0では、ギガビットイーサネット対応の製品がチラホラあるようだが、まだ高いし、検証目的なら100Mbpsでも問題ないし、どうしても1Gbps必要ならオンボード使えばいいし、ということでUSB2.0のものにした。

アキバ散策してたところ、2個ほど候補を発見したが買ったのはこれ。アキバオーで売ってた。735円

中国製で、製品名はよくわからないが、型番は、 「KY-AX88772ALF」らしい。

多分amazonのこいつが同一製品。

amazonの方が安い。もはや実店舗で買う利点は無いですね。

肝心の動作だが、自分の環境(ubuntu 13.04 x86_64)では、挿すだけで簡単に認識した。NICなら大丈夫とは思っていたが拍子抜けするほどだった。

ロードされているモジュールは、

asix というやつ。

他の環境の、12.04でも同じモジュールは存在するので、最近のLinuxならまず問題ないと思う。

ちょっとしか使ってないので(認識してping疎通確認)なんとも言えませんが、
普通には使えると思います。

ただちょっと気になるのが、そこそこ熱い。長持ちはしないかも。。。

Linuxでハイフン(-)で始まるファイルを消すとき

あまりあるケースでは無いが、何かの拍子にハイフン(-)で始まる、ファイルが出来ちゃったりする。

当然ミスって作ったファイルなので、消そうと思うのだが、ハイフンで始まるとオプションと解釈されてしまい

クォートしようと、エスケープしようと消せない。そんな時の消し方は、

  • 相対パスで指定する

    カレントからのパスを指定してやれば、オプションと解釈されません

  • オプションの終わり(--)(ハイフン2つ)を宣言する

どちらでも消せるのでどっちでも良いが、オプションの終わり(--)は、たまに役に立つ時があるので覚えておくと良いと思う。

--を解釈してくれないコマンドも結構ありますが:-P

centos6のproftpdにログイン出来ない。

素のままのcentos6では確認してないので、remiレポジトリを追加してupdateした環境だけかもしれないが、
proftpdに普通のunixアカウントでログイン出来ない。

 

ログにはこんなエラーが出ている。

ネットで調べたところ、proftpdのpam設定を変更すれば良いらしい。

  • 変更前

  • 変更後

 

required pam_stack.so を include system-auth にして

 

session はごっそり変更する。

ssh多段ログイン時のチルダ

sshで何個かホストを経由してるとき、~.(チルダ ドット)で切断しようとすると、一番手前のセッションが切断されてしまう。
その場合チルダを複数入力すれば、切断したいホストに送ることが出来る。


mypc -> A -> B
にログインしてる場合

 

 

 

チルダの使い方は、manを見れば詳しく書いてあるので、
ここでは簡単な説明だけします。

  • チルダの前に一回Enterを押す
  • チルダの後ろに実行したいコマンドを渡す
    ~. 切断
    ~C コマンドライン(ポートフォワードでよく使う)
    ~? ヘルプ