タグ

shellscriptに関するYAAのブックマーク (8)

  • bash の危険な算術式 - どさにっき

    ■ bash の危険な算術式 _ 使ってる人がいちばん多いだろうからタイトルでは bash としてるけど、ここで取り上げることは zsh および ksh 一族(家 ksh、pdksh、mksh)にも該当する。ash、dash などでは該当しない。 _ 以下のシェルスクリプトには脆弱性がある。わかるだろうか。 #!/bin/bash # "品目,単価,個数" の形式の CSV を読んで、"品目,合計金額" の形式で出力する csv="foo.csv" while IFS=, read item price num; do echo "$item,$((price*num))" done < "$csv" これ、細工された CSV ファイルをわせることで、任意コードの実行ができてしまう。数ある脆弱性の中でもとくにヤバいやつだ。どこが穴なのかというと、タイトルにもあるとおり算術式なのだが、し

  • bash -eより set -e - hitode909の日記

    こういうシェルスクリプトがあるとする. -eしてるので,途中でエラーが出たときには止まってほしい. #!/bin/bash -e echo 1 ehco 2 echo 3 止まってくれ……!! % ./a.sh 1 ./a.sh: line 4: ehco: command not foundちゃんと止まった. ところで,bash ./a.shとか,cat a.sh | bashとかして実行してみると,3まで実行されてしまう!!!. % bash ./a.sh 1 ./a.sh: line 4: ehco: command not found 3 % cat ./a.sh | bash 1 bash: line 4: ehco: command not found 3 こういったことがあってはつらいので,bash -eじゃなくて,set -eしましょう. #!/bin/bash set -

    bash -eより set -e - hitode909の日記
  • shell script を書くときの tips 2つ(初心者向け) - tokuhirom's blog

    shell script は普段さけて通りたいと願ってやまないわけですが、たまには書かないといけないことがあるので、そういうときは覚えておくと便利な tips を2つ。 autodie っぽくするset -eとすると、コマンドの実行に失敗したときにそこで実行がとまるので便利。 #!/bin/sh set -e perl -e 'die' echo SHOULD NOT REACH HEREとすると % ./hoge.sh Died at -e line 1. % echo $? 255となって、最後までいかずに死にます。 複数のコマンドを順番に実行するときに便利。 なお、以下のような挙動をするんだそうです。 ただし失敗したコマンドが until または while ループの一部である、 if 文の一部である、 && または || リストの一部である、 コマンドの返り値が ! で反転されてい

  • 「Platypus」でメニューエクストラ常駐型アプリを自作 - builder by ZDNet Japan

    前回紹介したPlatypusは、早い話が「シェルスクリプトを一般的な(バンドル型の)アプリに変換する」ためのユーティリティだ。ユーザーにシェル/ターミナルの存在を意識させることがないうえ、Xcodeを使うほどでもない単機能なGUIプログラムを手早く作成できる。Automatorで作成したアプリのように、OSのバージョンに依存しない点もメリットだ。 その基的な機能から解説していこう。まず、起動後に表示されるダイアログには、生成するアプリケーション名を入力する「App Name」、スクリプトの種類を指定する「Script Type」、あらかじめ用意しておいたスクリプトの保存位置を指定する「Script Path」がある。この3カ所への入力は必須で、スクリプトの内容によってはこれだけで足りることもある。 Platypusのユニークな点は、出力先にバリエーションがあることだ。デフォルトでは「Pr

    「Platypus」でメニューエクストラ常駐型アプリを自作 - builder by ZDNet Japan
  • 前月を知る - sh編 - (ひ)メモ

    shっていうかdateコマンドですけど。 安直に「1 month ago」でいいじゃん!と思った人は負けです(ぼくもですけど><)。 これはいいんだけど、 $ date '+%Y-%m-%d %T.%N'; date '+%Y-%m-%d %T.%N' -d '1 month ago' 2010-09-16 18:05:00.342008278 2010-08-16 18:05:00.344293593 このケースだと前月になってない # date 053100002010 >/dev/null; date '+%Y-%m-%d %T.%N'; date '+%Y-%m-%d %T.%N' -d '1 month ago' 2010-05-31 00:00:00.000000000 2010-05-01 00:00:00.004000016set $(date '+%Y %m') y=$1

    前月を知る - sh編 - (ひ)メモ
  • パターンにマッチする行まで出力 - masa.edw the ハバネロブリーダー

    いや、パターンにマッチする行までを出力するコマンドとかがあれば良いんだけど、標準的な方法があるだろうか?と思ってやっつけでこうしたのだった。 パターンにマッチする行まで(から)その行を含めたり含めなかったりして出力するコマンドってなんかありそうだけどなー。

    パターンにマッチする行まで出力 - masa.edw the ハバネロブリーダー
  • 添削:業務で楽するためのUNIXテクニック集 まずはおさらい、シェル制御構造と正規表現の基礎:CodeZine - hogehoge @teramako

    幾つか気になる点があるので書いておくよ。 執筆者KEIさんが修正してくださったので、以下の記事は既に古いものとなっている コマンドが左から右に順に実行されます。コマンド1が正常終了(終了コードが0)したら、コマンド2が実行されます。 コマンド1 ; コマンド2 ; ... 業務で楽するためのUNIXテクニック集 まずはおさらい、シェル制御構造と正規表現の基礎:CodeZine コマンド1が正常終了しなくてもコマンド2は実行されます。 なお for文では、次のように条件の設定を指定することもできます。 for ((i=0; i<5; i++)); do echo "$i"; done 業務で楽するためのUNIXテクニック集 まずはおさらい、シェル制御構造と正規表現の基礎:CodeZine C言語っぽくて開発者には分かり易いかもね。 僕としては for i in $(seq 0 5); do

    添削:業務で楽するためのUNIXテクニック集 まずはおさらい、シェル制御構造と正規表現の基礎:CodeZine - hogehoge @teramako
    YAA
    YAA 2008/10/27
    yes(1)だいすき
  • ゲームで極める シェルスクリプトスーパーテクニック - UNIX的なアレ

    シェルスクリプトの基的ななら割と世間に出回っているのですが、「極める」系のがあまり存在していないのが現状です。 実際、そこまでシェルスクリプトを使い倒すならPerlを使うよって言う方が多いからなのかもしれませんが、ここまでできるんだって思わせてくれる良書をみつけたので紹介します。 ゲームで極める シェルスクリプトスーパーテクニック 作者:山森 丈範技術評論社Amazon Contents 目次は以下のとおり。 Chapter1 シェルスクリプトの基 Chapter2 シェルスクリプト環境のカスタマイズ Chapter3 シェルスクリプトによる画面制御の基礎 Chapter4 シェルスクリプトでのリアルタイム入力 Chapter5 シェルスクリプトでの乱数発生方法 Chapter6 シェルスクリプトによるリアルタイム進行 Chapter7 シェルスクリプトでの配列の使い方 Chapt

    ゲームで極める シェルスクリプトスーパーテクニック - UNIX的なアレ
    YAA
    YAA 2008/02/13
    dd使うのか! ちょっと読んでみたいな。
  • 1