タグ

bashに関するlax34のブックマーク (24)

  • 【永久保存版】シェルスクリプト完全攻略ガイド - Qiita

    弊社Nucoでは、他にも様々なお役立ち記事を公開しています。よかったら、Organizationのページも覗いてみてください。 また、Nucoでは一緒に働く仲間も募集しています!興味をお持ちいただける方は、こちらまで。 シェルスクリプトの世界へようこそ! シェルスクリプトって何? シェルスクリプトは普段 Bash などのシェルで実行しているコマンドを並べて、まとめて実行できるようにしたものです。ファイルのバックアップ、ログファイルの解析、システムのセットアップなど、ターミナルで行っていた一連の作業をまとめてシェルスクリプトに記述することで、シェルスクリプトを実行するだけで自動的に一連の作業を終わらせることができるようになります。また、シェルスクリプトはファイルに保存することになるため、再利用するのも簡単になります。 シェルスクリプトで使うコマンドの多くは UNIX コマンドになると思います

    【永久保存版】シェルスクリプト完全攻略ガイド - Qiita
  • シェルスクリプトで安全簡単な二重起動防止・排他/共有ロックの徹底解説 - Qiita

    はじめに シェルスクリプトで二重起動防止やロックをする方法を検索すると、いろいろな方法や書き方が見つかりますが、どれを使えばよいのか、当に正しく動くのか、不安になりますよね? ディレクトリ (mkdir) やシンボリックリンク (ln) を使った独自実装の例も見かけますが、エラー発生時や予期せぬ電源断、CTRL+C で止めたときなどでも問題は発生しないのでしょうか? まず、ディレクトリやシンボリックリンクを使った独自実装はしない。これを肝に銘じてください。シェルスクリプトでのロック管理はとても難しく、一般的な排他制御の知識に加えて、シェルスクリプト特有の問題、シグナルやトラップ、サブシェルや子プロセスの問題、さらには特定のシェル固有の仕様やバグなどさまざまな問題に対処する必要があり大変です。独自実装の例では古いロックファイルが残ってしまい、それをいつどのタイミングで片付ければ安全なのか?

    シェルスクリプトで安全簡単な二重起動防止・排他/共有ロックの徹底解説 - Qiita
  • Bash Scriptの作法 - Qiita

    はじめに チーム開発でシェルスクリプト(特にBash Script)を書く際に守るべきルールをまとめます。 シェルスクリプトのコードレビューをする際等にお役立てください。 スクリプト名 -区切りの小文字英数字(いわゆるkebab-case)をつける。拡張子は.sh. これは特に理由があるわけではないので_区切りでもよいし、チーム内にzshやfish等の他Shell愛好家がいる場合は拡張子は.bashでも良い。どちらにせよチーム内では統一しておかないと混乱の元となる。 改行コード LFを使用する。CRLFだと動作しないので書く際に間違うことはないが、Windows上のgitのautocrlf設定によってはご丁寧にCRLFでチェックアウトされてしまう。 避けるためにはgit config --global core.autocrlf inputとするか、.gitattributesをレポジトリ

    Bash Scriptの作法 - Qiita
  • シェルスクリプトを書くときにいつもやるやつを調べた

    bash のシェルスクリプトを書くときに、いつも脳死で以下をやっている。(同僚が整備してくれたものをコピペしている) エディタなり CI で shellcheck をまわす set -euxo pipefail と冒頭に書く こんな感じ #!/bin/bash set -euxo pipefail いつまでもコピペではさすがにアレなので、意味を調べたメモ。 shellcheck koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts イケてない書き方に警告を出してくれる それぞれの警告にはエラーコード割り振られていてとても便利 エラーコードごとに正誤例、解説が書かれているのでわかりやすい SC1000 の例 CI もそうだし、エディタのプラグインも充実 しているのでとりあえず入れておくと良い set

    シェルスクリプトを書くときにいつもやるやつを調べた
  • ShellScriptのみを使って今Webサーバを作るとしたら - Qiita

    はじめに 記事はQiita夏祭り2020の 「 〇〇(言語)のみを使って、今△△(アプリ)を作るとしたら」のテーマ記事となります. 皆さん,シェルスクリプトは書いてますか? 私は最近になってシェルスクリプトを書くようになったのですが,触って見たら意外と面白いなと思うようになりました. そんなこんなで今回はシェルスクリプトでWebサーバ作ってみようかと思い立ちました. ネタとしては何番煎じかわからないくらいありきたりですがご容赦ください🙇‍♂️ 作ったもの ポート4000でHTTPリクエストを受けてstatic配下のhtmlファイルを返すWebサーバをShellScriptで作成しました. 拙いコードですがGitHubにコードをおいておきます. リポジトリへのリンク 実装方法 以下では最も初期の状態からどのように肉付けを行ったかを順に述べていきます. 開発環境はmacOSでシェルの動作は

    ShellScriptのみを使って今Webサーバを作るとしたら - Qiita
  • Bashの邪悪なコマンド9選 - Qiita

    rm -rf /やったことある人。 私はないです。 以下はAndreas Müller( Twitter / GitHub / LinkedIn / Medium )による記事、9 Evil Bash Commands Explainedの日語訳です。 9 Evil Bash Commands Explained 初めてターミナルを使って、そしてそれを理解したときのことを覚えています。 あらゆるファイルにアクセスし、全てのプログラムを実行し、黒い画面に何かを入力するだけでシステムの全てを完全に掌握できることに気がついた、あの感覚。 そしてもちろん、致命的ミスを犯して全てを失った、あのときの恐怖も。 私は当はシステム管理者ではありませんが、長年にわたってLinux/UNIXベースのシステムで作業してきたので、コマンドを実行しようとしてEnterキーを打つことを躊躇う状況に何度も遭遇しまし

    Bashの邪悪なコマンド9選 - Qiita
  • nohupを使ってsshログアウト後もシェルスクリプトを動かす - Qiita

    sshログウアウトするとなぜ止まるのか sshログインしている状態でバックグランドでシェルスクリプトを実行すると、sshdのログインシェル(bash)の子プロセスとしてシェルスクリプトが実行されます。 # プロセスの親子関係を確認 $pstree init─┬─agetty ├─atd ├─auditd───{auditd} ├─crond ├─dbus-daemon ├─dhclient ├─6*[mingetty] ├─ntpd ├─rngd ├─rpc.statd ├─rpcbind ├─rsyslogd───3*[{rsyslogd}] ├─2*[sendmail] ├─sshd───sshd───sshd───bash───pstree # バックグラウンドで./batchを実行 $./batch.sh & # batch.shはsshdの子プロセスのbashプロセスの子プロセス

    nohupを使ってsshログアウト後もシェルスクリプトを動かす - Qiita
  • bashで忘れがちな機能とかいろいろの備忘録 - Qiita

    背景 シェルスクリプトを書くことが結構あるのでその備忘録代わりに記事を書いてみました。 特殊変数とは 特殊変数とは シェルによって自動的に値が設定される特殊な変数がいくつかあり、それら特殊な変数を参照することにより、様々な情報を取得することができる。 変数名 説明

    bashで忘れがちな機能とかいろいろの備忘録 - Qiita
  • プログラマーの君! 騙されるな! シェルスクリプトはそう書いちゃ駄目だ!! という話 - Qiita

    記事が切っ掛けとなってお声がけを頂き、記事の増補リファイン版となる記事をSoftwareDesign 2018年1月号のシェルスクリプト特集第2章として執筆しました。リファイン版には、この記事で触れていない文法面での分かりにくさについての解説が含まれています。その文法面での分かりにくさの解説の一部に相当する記事もありますので、ぜひそちらも併せてご覧下さい。 Shell Script Advent Calendarをご覧の皆様、図々しくも5日目に続く2度目のエントリーのPiroです。 前回は自作のBashスクリプト製Twitterクライアントをネタに実装を解説しましたが、今日は他の言語で多少のプログラミング経験はあるんだけど、どうにもシェルスクリプトは苦手だ……という人のための、シェルスクリプトによるプログラミングの勘所を解説してみようと思います。多分、プログラミング入門レベルの人や上級

    プログラマーの君! 騙されるな! シェルスクリプトはそう書いちゃ駄目だ!! という話 - Qiita
  • php-buildがいかに便利かを力説する

    5/21 (土) に開催された PHP カンファレンス福岡に参加しました。社内向けに参加報告を行った際のスライドです。聴講した発表の中から、特に社内のメンバーに伝えたいと思った内容を選んで感想をまとめました。

    php-buildがいかに便利かを力説する
  • サーバーにsftpできないときは - console.lealog();

    Coda2やForkLiftやTransmitやらなんでもいいけどGUISftpソフトで、サーバーにつながらんくなった!って時の対処法です。 色んなケースがあるとは思いますが、私の場合はbashrcが悪さしてました。 原因と解決方法 原因 bashrcの記述に問題があって、Terminalみたいな「対話型ではない接続」ができなくなってました。 解決方法 ログイン時に読まれるであろうbashrcなどの「先頭」に、 [ -z "$PS1" ] && returnと記述してください。 何をしてるかというと、「対話型ではない接続」の場合は、以降を読み込まないようにしてるだけ。 普段のTerminalでの接続では、いつも通り読み込まれます。 解決までの道のり Coda2のファイラーが突然つながらんくなった 昨日までいけてたのに! Coda2が悪いのかと思い、Forkliftで試す→もちろんダメ。

    サーバーにsftpできないときは - console.lealog();
  • 緊急コラム: bash 脆弱性( CVE-2014-6271 )の影響範囲の調査方法について | NTTデータ先端技術株式会社

    Tweet 先週公開された bash の脆弱性について、管理されているサーバーへの影響を気にされている方が多いと思います。そこで緊急コラムとして、影響範囲の調査方法について紹介します。 bash は非常に多くの場面で使用されているプログラムであるため、 bash を呼び出す可能性のあるプログラムや場面をソースコード解析により列挙することは困難です。また、設定ファイルでの指定内容などにも依存する可能性もあり、文章でのお問合せにより漏れの無い的確な判断ができるかどうか不安が残ります。 Red Hat Enterprise Linux ( RHEL )には SELinux というセキュリティを強化するための機能が搭載されています。しかし、脆弱性の問題に限らず、システムのトラブル予防と適切な対処を行う上では、対象となるシステムの設定や挙動を事前に把握しておくことが重要であると考えます。 今回の脆弱

    緊急コラム: bash 脆弱性( CVE-2014-6271 )の影響範囲の調査方法について | NTTデータ先端技術株式会社
  • bash の脆弱性 "Shell Shock" のめっちゃ細かい話 (CVE-2014-6271) - もろず blog

    ※(2014/10/1 追記) 脆弱性の番号を誤って CVE-2014-6721 と表記してしまっていました 正しくは "CVE-2014-6271" です 失礼致しました ※(2014/10/7 追記) 2014/10/7 14:00時点で Shell Shock への修正パッチは6個 公開されています 既に対応済みのシステムでもパッチの漏れがないか注意してください シェルに脆弱性が見つかったらしいです このコマンドを実行すると脆弱性があるバージョンかのチェックができるようです $ env x='() { :;}; echo vulnerable' bash -c "echo this is a test" 以下のように表示されたらアウトです vulnerable this is a test どうやら、このコマンドが正常に実行できるというのがこの脆弱性の正体らしく、 echo vuln

    bash の脆弱性 "Shell Shock" のめっちゃ細かい話 (CVE-2014-6271) - もろず blog
  • 更新:bash の脆弱性対策について(CVE-2014-6271 等):IPA 独立行政法人 情報処理推進機構

    GNU Project が提供する bash は、Linux など UNIX 系の OS に含まれるコマンドを実行するためのシェル(OS の一部としてプログラムの起動や制御などを行うプログラム)です。 bash に任意の OS コマンドを実行される脆弱性 (CVE-2014-6271) が発見され、2014 年 9 月 24 日に修正パッチが公開されました。 ただし、CVE-2014-6271への修正が不十分であるという情報があります。その修正が不十分であることによる脆弱性 (CVE-2014-7169) に対応したアップデートまたはパッチも各ベンダから順次公開されています。 bash を使用して OS コマンドを実行するアプリケーションを介して、遠隔から任意の OS コマンドを実行される可能性があります。 図:脆弱性を悪用した攻撃のイメージ 警察庁によると脆弱性を標的としたアクセスが観

  • 2014/09/24に発表されたBash脆弱性と解決法(RedHat系、9/26更新) - Qiita

    2014/09/26更新: 日新たに公開された再修正版を適用するように、情報を更新しました。恐らく、24日のは暫定対応版で今回のリリースが正式対応版だと思います。緊急性については前回のレベルほど高くありません(が、前回の作業を行っていない場合は急ぎましょう)。 Bash使い(特にBashのCGIスクリプト書いてる人)は一刻を争うべき 2014/09/24に発表されてたBash脆弱性。 上記サイトに概要が書いてありますが、何が一番ヤバいかと言えばBashで書いたCGIスクリプトを動かしているサーバーだと私は思います。 詳しくは書きませんが、telnetコマンドで簡単に悪意のあるコードを仕込めました。悪意あるコードが、rmコマンドだったりしたら。取り返しが付きません。 解決法(RedHat、CentOS等) yumコマンドやrpmコマンドでパッケージ管理をしているRedHat系(CentOS

    2014/09/24に発表されたBash脆弱性と解決法(RedHat系、9/26更新) - Qiita
  • /bin/bash^M: bad interpreter: そのようなファイルやディレクトリはありません (No such file or directory) - カタカタブログ

    Windows環境で保存したシェルスクリプトをLinux環境で実行すると /bin/bash^M: bad interpreter: そのようなファイルやディレクトリはありません /bin/bash^M: bad interpreter: No such file or directoryのエラー。 改行コードが\r\nで保存されてしまったため、Linuxの\nに直す必要がある。 対処法は以下。 sedコマンド一発で変換できる $ sed -i 's/\r//' <対象のファイル> 以下、検証 cat -e で見ると、改行コードに\rが含まれていることが分かる。 $ cat -e hello.sh #!/bin/bash^M$ echo "hello,world"^M$このまま実行するとエラー $ ./hello.sh -bash: ./hello.sh: /bin/bash^M: bad

    /bin/bash^M: bad interpreter: そのようなファイルやディレクトリはありません (No such file or directory) - カタカタブログ
    lax34
    lax34 2014/07/28
  • コンソールから切れたプロセスを標準出力につなげなおす - 絶品ゆどうふのタレ

    不慣れな環境を不意にいじった時にあるあるネタ。 とりあえずー とか言って勢いで書いたsetupスクリプトを実行してみたら意外と時間かかって、 ちょっと目を離した隙にsshの接続が切れちゃいました! 。。。ありますよね。ほんとよくありますよね。 そうなる予感はあったんだ なんて後の祭りです。ふとした油断から、screenもnohupすらも使わずにやってしまって、こんなことに。 shellがHUPしなかったからプロセスは生きてるものの、ログが見れないから進行状況がわからない。 うまく行ってるのかどうかモヤモヤした気持ちのまま、プロセスが終わるのをじっと待つ。。。 まぁ実に切ないです。 こんな時、いつも思うこと。 このプロセスの出力、もっかいstdoutに繋げられたらいいのに。。。 はい。というわけでつなげましょう。 長い前座ですみません。 切り離したプロセスを用意 #!/bin/bash wh

    コンソールから切れたプロセスを標準出力につなげなおす - 絶品ゆどうふのタレ
  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
  • シェルスクリプトで「ビルドスクリプト」を作る時に便利なテクニック - ククログ(2012-10-11)

    プログラムの種類によっては、そのまま実行できるものと、実行できるようにするために「ビルド」が必要なものとがあります。Cなどのコンパイルが必要な言語で書かれたプログラムは当然ビルドが必要ですし、コンパイルが不要な言語であっても、インストーラパッケージを作るというビルド作業が必要な場合はあります。 ビルド作業の自動化のためのツールとしてmakeなどがありますが、そこまで格的な事をやる必要がない場合は、シェルスクリプトで「ビルドスクリプト」を作るのが手軽でおすすめです。この記事では、そのような場合に役立つシェルスクリプトのテクニックを4つご紹介します。 エラーの気付きやすさとデバッグのしやすさを高める メッセージに色を付ける シェル関数をライブラリにする 一時的に作業ディレクトリの中に入る エラーの気付きやすさとデバッグのしやすさを高める はじめに紹介するテクニックは問題が発生した時に気づきや

    シェルスクリプトで「ビルドスクリプト」を作る時に便利なテクニック - ククログ(2012-10-11)
  • UNIXの部屋 検索-リダイレクト

    最終更新 2019-01-27 UNIX/Linux のシェル sh・bash・csh・tcsh のリダイレクトを説明する。ファイルへの出力、コマンド出力を別のコマンドの入力とする、標準入力・標準出力・標準エラー出力、パイプなどもあわせて説明する。