SlideShare une entreprise Scribd logo
1  sur  23
長谷川 
1
シェルの紹介に触発されて。 
Windows環境しか使わない場合でもシェルを覚えて 
いて損はないということの周知。 
2
1. WindowsでUnix環境を使おう 
2. よく使うシェルと使うシチュエーション 
◦ 結構すぐ使えるシェル 
今日はこっちを紹介します。 
◦ やや技巧的なシェル 
◦ 技巧的なシェル 
技巧的なシェルは特定業務に特化してしまうので後 
回し 
3
4 
• cygwinのインストール 
• 環境設定 
※cygwinとはWindows上で動作するUnixライクな環境。 
※そのうちPowerShellの紹介もしたい。
下記からインストーラーをダウンロードしてインストー 
ルする。 
https://www.cygwin.com/ 
必要なパッケージを選択してインストールする。 
後で追加もできる。 
5
実行画面はUnix環境っぽい感じ。 
ディレクトリなどが自動的に作られる。 
Windowsから楽に使えるように環境設定する。 
6
DOS画面からcygwinのコマンドを使えるようにする。 
PATHにcygwinのbinのパスを追加。 
SET PATH=%PATH%;C:cygwinbin 
下線はcygwinをインストールしたところ。 
DOS画面からcygwinのコマンドが使えるように 
なった! 
7
テク① 
ここに「cmd」と入力してEnterを押すと 
このパスでDOS画面を開けます。 
8
9 
結構すぐ使えるシェル 
①ディレクトリの一覧を取得(DOS) 
②大量のファイルをcsvにする(cygwin) 
③ディレクトリの使用容量(cygwin) 
④csvの特定列の最大値取得(cygwin) 
⑤プロセス多重起動監視(cygwin) 
⑥自動FTP操作(cygwin) 
⑦ネットワーク設定の変更(PowerShell)
TREE 
ドライブやパスのフォルダー構造を図式表示します。 
/F 各フォルダーのファイル名を表示します。 
/A 拡張文字ではなく、ASCII 文字で表示します。 
>TREE /F /A > tree.txt 
C:. 
| classes.dex 
| hello.apk 
| resources.ap_ 
| 
+---classes 
| ---hello 
| ---namespace 
| HelloActivity.class 
| R$attr.class 
| R$drawable.class 
| R$id.class 
パイプ等で使うときはls –Rなどのパス 
のみ表示するコマンドを使う。 
10
【シチュエーション】大量のvmstatのログファイルが 
あってそれを全部csvに変換したい。 
r b swpd free buff cache si so bi bo in cs us sy id wa st 
1 0 128 57012 87772 664448 0 0 12 10 75 68 0 1 98 1 0 
0 0 128 59368 87772 664480 0 0 0 0 189 90 7 4 89 0 0 
0 0 128 59368 87772 664480 0 0 0 0 174 80 4 3 93 0 0 
0 0 128 59368 87772 664480 0 0 0 0 159 90 6 3 91 0 0 
0 0 128 59376 87772 664480 0 0 0 0 139 63 4 3 93 0 0 
0 0 128 59376 87772 664480 0 0 0 0 165 86 4 4 92 0 0 
0 0 128 59376 87780 664480 0 0 0 60 161 80 5 3 92 0 0 
~~~~~ 1万行くらい~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 
0 0 128 59376 87780 664480 0 0 0 0 174 92 5 5 90 0 0 
0 0 128 59376 87780 664480 0 0 0 0 144 66 6 3 91 0 0 
0 0 128 59376 87780 664480 0 0 0 0 156 82 5 3 92 0 0 
0 0 128 59376 87780 664480 0 0 0 0 156 77 4 4 92 0 0 
0 0 128 59376 87784 664480 0 0 0 28 163 94 5 4 91 0 0 
0 0 128 59376 87784 664480 0 0 0 0 143 69 4 3 93 0 0 
0 0 128 59376 87784 664480 0 0 0 0 160 81 6 3 91 0 0 
0 0 128 59376 87780 664480 0 0 0 0 144 66 6 3 91 0 0 
0 0 128 59376 87780 664480 0 0 0 0 156 82 5 3 92 0 0 
0 0 128 59376 87780 664480 0 0 0 0 156 77 4 4 92 0 0 
0 0 128 59376 87784 664480 0 0 0 28 163 94 5 4 91 0 0 
0 0 128 59376 87784 664480 0 0 0 0 143 69 4 3 93 0 0 
0 0 128 59376 87784 664480 0 0 0 0 160 81 6 3 91 0 0 
このようなファイルが100個くらいある。 
#getconf ARG_MAX 
32000 ←引数3200個までは大丈夫 
vmstat:実行待ちプロセス数、割り込み回数、消費メモリ、 
カーネル/ユーザ/アイドルのCPU使用率、 
コンテキストスイッチ数などを取得するコマンド。 
11
【コマンド】 
コマンド機能オプションなど意味 
sed 文字列置換。-r 正規表現使用 
s/条件/文字/g 条件を文字列に置換 
find ファイル検索-type f:ファイル、d:ディレクトリ、l:シンボ 
リックリンク 
-name ファイル名のパターン 
-print0 区切り文字を0にする。 
xargs ARG_MAX以 
下になるように 
分割してコマン 
ド実行 
-0 区切り文字を0にする。 
-PN 並列数N。0は最大限の並列化。 
-t コマンドを標準エラー出力。 
-I str strを標準入力の引数に置換。 
12
#!/bin/sh 
0以上の連続するスペースを,に置換し、拡張子 
csvで保存。 
function func() 
{ 
sed -r "s/[ ]+/,/g" "$1" > "$1.csv" 
} 
export -f func 
カレントディレクトリの*.logファイルのパスを引数 
にしてfuncを呼び出す。 
区切り0にしないとパスのスペースで区切られる。 
find . -type f –maxdepth 1 -name "*.log" -print0 | 
xargs -0 -P0 -t -I %arg bash -c "func %arg" 
シングルクォーテーション’⇒シェル展開しない。 
ダブルクォーテーション”⇒シェル展開する。 
13
【コマンド】 
コマンド機能オプションなど意味 
du ディスク使用容 
量。 
-m メガバイト単位。 
-k キロバイト単位。 
-h M/K/Gを自動で選択する。 
-s サブディレクトリを除く。 
sort ソート-r 降順でソート。 
-n 数値としてソート。 
-u 重複排除。 
14
C:cygwinusr>du -sk ./* | sort -rn 
409122 ./share 
378867 ./ppc 
343904 ./lib 
166279 ./bin 
63405 ./include 
47820 ./src 
28486 ./i686-pc-mingw32 
2432 ./libexec 
413 ./sbin 
6 ./i686-pc-cygwin 
3 ./ssl 
カレントディレクトリの各ディレクトリの使 
用容量を降順でソート 
Windosのsortが優先される場合があ 
るので注意 
パス検索の順序確認 
>where sort 
C:cygwinbinsort.exe 
C:WindowsSystem32sort.exe 
15
【コマンド】 
コマンド機能オプションなど意味 
awk 
文字列処理用 
(gawk) 
言語。 
-F 区切り文字 
{cmd1} END{cmd2} cmd1:各行で実行 
cmd2:最後に実行 
構文:awk ‘program’ [file ...] 
gawk -F, ‘{print $2 $5}’ xx.csv ⇒csvの各行の2、5列目を表示。 
gawk -F, ‘{printf “data10:%dn”, $10}’ xx.csv ⇒data10: dataという出力形式。 
gawk -F, ‘BEGIN{print “START”} 
{printf “data10:%dn”, $10} END{print “END”}’ xx.csv 
⇒最初にSTART/最後にENDと表示。 
16
gawk -F, ‘{print $5}’ x.csv | sort -nr | head -n 1 
5列目の最大値を表示。 
head –n N:先頭からN行を表示。 
gawk -F, ‘{sum +=$5} END{print sum / NR}’ x.csv 
5列目の平均を表示。 
NR:行数 
※数値以外が含まれる場合の考慮はしていない。 
17
【コマンド】 
コマンド機能オプションなど意味 
ps プロセス表示。aux a:全ユーザー、u:ユーザ名と開始 
時刻、x:全プロセス 
grep 文字列の検索-v マッチしない行を表示。 
-A num 
-B num 
A:マッチ行の前num行を表示。 
B:マッチ行の後num行を表示。 
-E 拡張正規表現(ERE)使用。egrepと 
同様。 
wc 行数などを表 
示。 
-c バイト数をカウント。 
-w 単語数をカウント。 
-l 行数をカウント。 
なし行数、単語数、バイト数をカウント。 
pgrep PIDを取得。-x 完全一致のプロセスのPIDを取得。 
18
#!/bin/sh 
threshold=3 
count=$(ps aux | grep "$1" | 
grep -v "grep" | wc -l) 
if [ "$count" -ge "$threshold" ]; then 
echo "[WARNING]$count" 
fi 
psから引数のプロセスを抽出。 
pgrep –x ”$1”でもよい。 
psからgrepを除き、行 
数を取得。 
プロセス数が閾値以上ならばメッセージを表示。 
watchコマンド、whileなどで定期実行しておく。 
19
【コマンド】 
ヒアドキュメント 
cmd<<xxでcmdにデータを渡すことができる。 
cmd<<-xxとすると行頭のタブが無視される。 
xxを’で囲むと変数、コマンドが展開されない。 
例) 
mail –s ’タイトル’ <<EOF 
メール本文 
EOF 
20
#!/bin/sh 
ftp –n “192.168.100.1” << EOF 
#ftp –n 標準入力からログイン情報を取得。 
user ’hasegawa’ ’password’ 
binary 
#binaryモード 
cd ../ 
mget ”*.log” 
EOF 
ログインしてbinaryモードに切り替えて、 
ログディレクトリに移動して*.logを取得 
する。 
21
PowerShellについては近々紹介予定。 
Windowsの設定を自動化できる。 
C:WINDOWSsystem32WindowsPowerShellv 
1.0 
$adapters=Get-WmiObject -Class 
Win32_NetworkAdapterConfiguration - 
ComputerName. -Filter "IPEnabled='True'“ 
$adapters[0].EnableStatic(“192.168.200.100”,” 
255.255.255.0”) 
22
$ip=@() 
$mask=@() 
$ip+=“1.1.1.1” 
$ip+=”2.2.2.2” 
$mask+=“255.0.0.0” 
$mask+=“255.0.0.0” 
16個IPアドレスを設定するのもスクリ 
プトでやれば簡単 
$adapters[0].EnableStatic($ip, $mask) 
23

Contenu connexe

Tendances

第126回 ロボット工学セミナー 三次元点群と深層学習
第126回 ロボット工学セミナー 三次元点群と深層学習第126回 ロボット工学セミナー 三次元点群と深層学習
第126回 ロボット工学セミナー 三次元点群と深層学習Naoya Chiba
 
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイントVPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイントTakuya Takaseki
 
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...Preferred Networks
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.kiki utagawa
 
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)株式会社MonotaRO Tech Team
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)NTT DATA Technology & Innovation
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyYahoo!デベロッパーネットワーク
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門Kohei Tokunaga
 
第2回Matlantis User Conference_20230421_久間薫先生
第2回Matlantis User Conference_20230421_久間薫先生第2回Matlantis User Conference_20230421_久間薫先生
第2回Matlantis User Conference_20230421_久間薫先生Matlantis
 
ゲーム開発を加速させる クライアントセキュリティ
ゲーム開発を加速させる クライアントセキュリティゲーム開発を加速させる クライアントセキュリティ
ゲーム開発を加速させる クライアントセキュリティLINE Corporation
 
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)NTT DATA Technology & Innovation
 
Immersal で広がる Magic Leap の拡張範囲
Immersal で広がる Magic Leap の拡張範囲Immersal で広がる Magic Leap の拡張範囲
Immersal で広がる Magic Leap の拡張範囲NishoMatsusita
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
[Dl輪読会]dl hacks輪読
[Dl輪読会]dl hacks輪読[Dl輪読会]dl hacks輪読
[Dl輪読会]dl hacks輪読Deep Learning JP
 
RTBにおける機械学習の活用事例
RTBにおける機械学習の活用事例RTBにおける機械学習の活用事例
RTBにおける機械学習の活用事例MicroAd, Inc.(Engineer)
 
NVIDIA/deepopsを触ってみた話
NVIDIA/deepopsを触ってみた話NVIDIA/deepopsを触ってみた話
NVIDIA/deepopsを触ってみた話Kota Tsuyuzaki
 
Win32 APIをてなずけよう
Win32 APIをてなずけようWin32 APIをてなずけよう
Win32 APIをてなずけようKouji Matsui
 
3GPP TR38.801-e00まとめ
3GPP TR38.801-e00まとめ3GPP TR38.801-e00まとめ
3GPP TR38.801-e00まとめTetsuya Hasegawa
 
[DL輪読会]Pervasive Attention: 2D Convolutional Neural Networks for Sequence-to-...
[DL輪読会]Pervasive Attention: 2D Convolutional Neural Networks for Sequence-to-...[DL輪読会]Pervasive Attention: 2D Convolutional Neural Networks for Sequence-to-...
[DL輪読会]Pervasive Attention: 2D Convolutional Neural Networks for Sequence-to-...Deep Learning JP
 
無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろうakira6592
 

Tendances (20)

第126回 ロボット工学セミナー 三次元点群と深層学習
第126回 ロボット工学セミナー 三次元点群と深層学習第126回 ロボット工学セミナー 三次元点群と深層学習
第126回 ロボット工学セミナー 三次元点群と深層学習
 
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイントVPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
 
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
How to Schedule Machine Learning Workloads Nicely In Kubernetes #CNDT2020 / C...
 
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
 
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
モノタロウの1900万商品を検索する Elasticsearch構築運用事例(2022-10-26 第50回Elasticsearch 勉強会発表資料)
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
第2回Matlantis User Conference_20230421_久間薫先生
第2回Matlantis User Conference_20230421_久間薫先生第2回Matlantis User Conference_20230421_久間薫先生
第2回Matlantis User Conference_20230421_久間薫先生
 
ゲーム開発を加速させる クライアントセキュリティ
ゲーム開発を加速させる クライアントセキュリティゲーム開発を加速させる クライアントセキュリティ
ゲーム開発を加速させる クライアントセキュリティ
 
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
Knative Eventing 入門(Kubernetes Novice Tokyo #11 発表資料)
 
Immersal で広がる Magic Leap の拡張範囲
Immersal で広がる Magic Leap の拡張範囲Immersal で広がる Magic Leap の拡張範囲
Immersal で広がる Magic Leap の拡張範囲
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
[Dl輪読会]dl hacks輪読
[Dl輪読会]dl hacks輪読[Dl輪読会]dl hacks輪読
[Dl輪読会]dl hacks輪読
 
RTBにおける機械学習の活用事例
RTBにおける機械学習の活用事例RTBにおける機械学習の活用事例
RTBにおける機械学習の活用事例
 
NVIDIA/deepopsを触ってみた話
NVIDIA/deepopsを触ってみた話NVIDIA/deepopsを触ってみた話
NVIDIA/deepopsを触ってみた話
 
Win32 APIをてなずけよう
Win32 APIをてなずけようWin32 APIをてなずけよう
Win32 APIをてなずけよう
 
3GPP TR38.801-e00まとめ
3GPP TR38.801-e00まとめ3GPP TR38.801-e00まとめ
3GPP TR38.801-e00まとめ
 
[DL輪読会]Pervasive Attention: 2D Convolutional Neural Networks for Sequence-to-...
[DL輪読会]Pervasive Attention: 2D Convolutional Neural Networks for Sequence-to-...[DL輪読会]Pervasive Attention: 2D Convolutional Neural Networks for Sequence-to-...
[DL輪読会]Pervasive Attention: 2D Convolutional Neural Networks for Sequence-to-...
 
無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう無料で仮想Junos環境を手元に作ろう
無料で仮想Junos環境を手元に作ろう
 

En vedette

Zshって最強らしい
Zshって最強らしいZshって最強らしい
Zshって最強らしいngi group.
 
シェル入門
シェル入門シェル入門
シェル入門ina job
 
Mustache入門
Mustache入門Mustache入門
Mustache入門ina job
 
zsh最強シェル入門読書会1
zsh最強シェル入門読書会1zsh最強シェル入門読書会1
zsh最強シェル入門読書会1Naoya Nakazawa
 
1 Linux入門 第4章 シェル
1 Linux入門 第4章 シェル1 Linux入門 第4章 シェル
1 Linux入門 第4章 シェルEnpel
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極めるbsdhack
 
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」博文 斉藤
 
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプトbsdhack
 
Electronで社内ツールを作ったお話
Electronで社内ツールを作ったお話Electronで社内ツールを作ったお話
Electronで社内ツールを作ったお話sters
 

En vedette (9)

Zshって最強らしい
Zshって最強らしいZshって最強らしい
Zshって最強らしい
 
シェル入門
シェル入門シェル入門
シェル入門
 
Mustache入門
Mustache入門Mustache入門
Mustache入門
 
zsh最強シェル入門読書会1
zsh最強シェル入門読書会1zsh最強シェル入門読書会1
zsh最強シェル入門読書会1
 
1 Linux入門 第4章 シェル
1 Linux入門 第4章 シェル1 Linux入門 第4章 シェル
1 Linux入門 第4章 シェル
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極める
 
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
シェルスクリプトワークショップ資料 - 上級者向け「シェル芸」
 
仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト仕事で使えるシェルスクリプト
仕事で使えるシェルスクリプト
 
Electronで社内ツールを作ったお話
Electronで社内ツールを作ったお話Electronで社内ツールを作ったお話
Electronで社内ツールを作ったお話
 

Similaire à Windowsでも使えるシェル

Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presenKouhei Maeda
 
Circle ci and docker+serverspec
Circle ci and docker+serverspecCircle ci and docker+serverspec
Circle ci and docker+serverspecTsuyoshi Yamada
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, CodereadingHiro Yoshioka
 
MINCS – containers in the shell script
MINCS – containers in the shell scriptMINCS – containers in the shell script
MINCS – containers in the shell scriptMasami Hiramatsu
 
Cloud9にリモートデスクトップ接続する
Cloud9にリモートデスクトップ接続するCloud9にリモートデスクトップ接続する
Cloud9にリモートデスクトップ接続するRyo Ishii
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックEmma Haruka Iwao
 
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したいAwsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい聡 大久保
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動Takashi Takizawa
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Takeshi Arabiki
 
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術までAkihiro Suda
 
Task Spooler を試した
Task Spooler を試したTask Spooler を試した
Task Spooler を試したy-uti
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLakirahiguchi
 
Linux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutesLinux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutesYohei Azekatsu
 

Similaire à Windowsでも使えるシェル (20)

Maatkitの紹介
Maatkitの紹介Maatkitの紹介
Maatkitの紹介
 
Open VZ
Open VZOpen VZ
Open VZ
 
Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presen
 
Circle ci and docker+serverspec
Circle ci and docker+serverspecCircle ci and docker+serverspec
Circle ci and docker+serverspec
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
 
about DakotagUI
about DakotagUIabout DakotagUI
about DakotagUI
 
MINCS – containers in the shell script
MINCS – containers in the shell scriptMINCS – containers in the shell script
MINCS – containers in the shell script
 
Cloud9にリモートデスクトップ接続する
Cloud9にリモートデスクトップ接続するCloud9にリモートデスクトップ接続する
Cloud9にリモートデスクトップ接続する
 
Dockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニックDockerイメージ構築 実践テクニック
Dockerイメージ構築 実践テクニック
 
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したいAwsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
 
Unix
UnixUnix
Unix
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
 
Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理Rのデータ構造とメモリ管理
Rのデータ構造とメモリ管理
 
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 
Tokyor23 doradora09
Tokyor23 doradora09Tokyor23 doradora09
Tokyor23 doradora09
 
Hbstudy41 auto scaling
Hbstudy41 auto scalingHbstudy41 auto scaling
Hbstudy41 auto scaling
 
Task Spooler を試した
Task Spooler を試したTask Spooler を試した
Task Spooler を試した
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
 
Linux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutesLinux Performance Analysis in 15 minutes
Linux Performance Analysis in 15 minutes
 
Hack for Docker's Network
Hack for Docker's NetworkHack for Docker's Network
Hack for Docker's Network
 

Plus de Tetsuya Hasegawa

CVE-2021-3156 Baron samedit (sudoの脆弱性)
CVE-2021-3156 Baron samedit (sudoの脆弱性)CVE-2021-3156 Baron samedit (sudoの脆弱性)
CVE-2021-3156 Baron samedit (sudoの脆弱性)Tetsuya Hasegawa
 
RFC8528(YANG Schema Mount)の勉強資料
RFC8528(YANG Schema Mount)の勉強資料RFC8528(YANG Schema Mount)の勉強資料
RFC8528(YANG Schema Mount)の勉強資料Tetsuya Hasegawa
 
RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料
RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料
RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料Tetsuya Hasegawa
 
面白いセキュリティツール その2
面白いセキュリティツール その2面白いセキュリティツール その2
面白いセキュリティツール その2Tetsuya Hasegawa
 
RFC7589(NETCONF Protocol over TLS)の勉強資料
RFC7589(NETCONF Protocol over TLS)の勉強資料RFC7589(NETCONF Protocol over TLS)の勉強資料
RFC7589(NETCONF Protocol over TLS)の勉強資料Tetsuya Hasegawa
 
RFC8632(A YANG Data Model for Alarm Management)の勉強資料
RFC8632(A YANG Data Model for Alarm Management)の勉強資料RFC8632(A YANG Data Model for Alarm Management)の勉強資料
RFC8632(A YANG Data Model for Alarm Management)の勉強資料Tetsuya Hasegawa
 
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料Tetsuya Hasegawa
 
RFC8341(Network Configuration Access Control Model)の勉強資料。
RFC8341(Network Configuration Access Control Model)の勉強資料。RFC8341(Network Configuration Access Control Model)の勉強資料。
RFC8341(Network Configuration Access Control Model)の勉強資料。Tetsuya Hasegawa
 
RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。Tetsuya Hasegawa
 
3GPP F1インターフェース(TS38.470-f50)の概要
3GPP F1インターフェース(TS38.470-f50)の概要3GPP F1インターフェース(TS38.470-f50)の概要
3GPP F1インターフェース(TS38.470-f50)の概要Tetsuya Hasegawa
 
RFC8340(YANG Tree Diagrams)の勉強資料
RFC8340(YANG Tree Diagrams)の勉強資料RFC8340(YANG Tree Diagrams)の勉強資料
RFC8340(YANG Tree Diagrams)の勉強資料Tetsuya Hasegawa
 
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)Tetsuya Hasegawa
 
RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料
RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料
RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料Tetsuya Hasegawa
 
RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料Tetsuya Hasegawa
 
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料Tetsuya Hasegawa
 
RFC5277(NETCONF Event Notifications)の勉強資料
RFC5277(NETCONF Event Notifications)の勉強資料RFC5277(NETCONF Event Notifications)の勉強資料
RFC5277(NETCONF Event Notifications)の勉強資料Tetsuya Hasegawa
 
5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向
5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向
5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向Tetsuya Hasegawa
 
MCPC第5回イノベーションチャレンジセミナーメモ
MCPC第5回イノベーションチャレンジセミナーメモMCPC第5回イノベーションチャレンジセミナーメモ
MCPC第5回イノベーションチャレンジセミナーメモTetsuya Hasegawa
 
面白いセキュリティツール
面白いセキュリティツール面白いセキュリティツール
面白いセキュリティツールTetsuya Hasegawa
 

Plus de Tetsuya Hasegawa (20)

CVE-2021-3156 Baron samedit (sudoの脆弱性)
CVE-2021-3156 Baron samedit (sudoの脆弱性)CVE-2021-3156 Baron samedit (sudoの脆弱性)
CVE-2021-3156 Baron samedit (sudoの脆弱性)
 
RFC8528(YANG Schema Mount)の勉強資料
RFC8528(YANG Schema Mount)の勉強資料RFC8528(YANG Schema Mount)の勉強資料
RFC8528(YANG Schema Mount)の勉強資料
 
RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料
RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料
RFC7951(JSON Encoding of Data Modeled with YANG)の勉強資料
 
面白いセキュリティツール その2
面白いセキュリティツール その2面白いセキュリティツール その2
面白いセキュリティツール その2
 
RFC7589(NETCONF Protocol over TLS)の勉強資料
RFC7589(NETCONF Protocol over TLS)の勉強資料RFC7589(NETCONF Protocol over TLS)の勉強資料
RFC7589(NETCONF Protocol over TLS)の勉強資料
 
RFC8632(A YANG Data Model for Alarm Management)の勉強資料
RFC8632(A YANG Data Model for Alarm Management)の勉強資料RFC8632(A YANG Data Model for Alarm Management)の勉強資料
RFC8632(A YANG Data Model for Alarm Management)の勉強資料
 
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
RFC5717(Partial Lock Remote Procedure Call (RPC) for NETCONF)の勉強資料
 
RFC8341(Network Configuration Access Control Model)の勉強資料。
RFC8341(Network Configuration Access Control Model)の勉強資料。RFC8341(Network Configuration Access Control Model)の勉強資料。
RFC8341(Network Configuration Access Control Model)の勉強資料。
 
RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。RFC8525(YANG Library)の勉強資料。
RFC8525(YANG Library)の勉強資料。
 
3GPP F1インターフェース(TS38.470-f50)の概要
3GPP F1インターフェース(TS38.470-f50)の概要3GPP F1インターフェース(TS38.470-f50)の概要
3GPP F1インターフェース(TS38.470-f50)の概要
 
RFC8340(YANG Tree Diagrams)の勉強資料
RFC8340(YANG Tree Diagrams)の勉強資料RFC8340(YANG Tree Diagrams)の勉強資料
RFC8340(YANG Tree Diagrams)の勉強資料
 
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
SSHパケットの復号ツールを作ろう_v1(Decrypt SSH .pcap File)
 
RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料
RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料
RFC8071(NETCONF Call Home and RESTCONF Call Home)の勉強資料
 
RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料RFC6243(With-defaults Capability for NETCONF)の勉強資料
RFC6243(With-defaults Capability for NETCONF)の勉強資料
 
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
RFC6241(Network Configuration Protocol (NETCONF))の勉強資料
 
RFC5277(NETCONF Event Notifications)の勉強資料
RFC5277(NETCONF Event Notifications)の勉強資料RFC5277(NETCONF Event Notifications)の勉強資料
RFC5277(NETCONF Event Notifications)の勉強資料
 
5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向
5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向
5Gを含む将来ネットワークにおけるAI活用に関する国際標準化動向
 
MCPC第5回イノベーションチャレンジセミナーメモ
MCPC第5回イノベーションチャレンジセミナーメモMCPC第5回イノベーションチャレンジセミナーメモ
MCPC第5回イノベーションチャレンジセミナーメモ
 
RFC5996(IKEv2)第2版
RFC5996(IKEv2)第2版RFC5996(IKEv2)第2版
RFC5996(IKEv2)第2版
 
面白いセキュリティツール
面白いセキュリティツール面白いセキュリティツール
面白いセキュリティツール
 

Windowsでも使えるシェル

  • 3. 1. WindowsでUnix環境を使おう 2. よく使うシェルと使うシチュエーション ◦ 結構すぐ使えるシェル 今日はこっちを紹介します。 ◦ やや技巧的なシェル ◦ 技巧的なシェル 技巧的なシェルは特定業務に特化してしまうので後 回し 3
  • 4. 4 • cygwinのインストール • 環境設定 ※cygwinとはWindows上で動作するUnixライクな環境。 ※そのうちPowerShellの紹介もしたい。
  • 5. 下記からインストーラーをダウンロードしてインストー ルする。 https://www.cygwin.com/ 必要なパッケージを選択してインストールする。 後で追加もできる。 5
  • 7. DOS画面からcygwinのコマンドを使えるようにする。 PATHにcygwinのbinのパスを追加。 SET PATH=%PATH%;C:cygwinbin 下線はcygwinをインストールしたところ。 DOS画面からcygwinのコマンドが使えるように なった! 7
  • 9. 9 結構すぐ使えるシェル ①ディレクトリの一覧を取得(DOS) ②大量のファイルをcsvにする(cygwin) ③ディレクトリの使用容量(cygwin) ④csvの特定列の最大値取得(cygwin) ⑤プロセス多重起動監視(cygwin) ⑥自動FTP操作(cygwin) ⑦ネットワーク設定の変更(PowerShell)
  • 10. TREE ドライブやパスのフォルダー構造を図式表示します。 /F 各フォルダーのファイル名を表示します。 /A 拡張文字ではなく、ASCII 文字で表示します。 >TREE /F /A > tree.txt C:. | classes.dex | hello.apk | resources.ap_ | +---classes | ---hello | ---namespace | HelloActivity.class | R$attr.class | R$drawable.class | R$id.class パイプ等で使うときはls –Rなどのパス のみ表示するコマンドを使う。 10
  • 11. 【シチュエーション】大量のvmstatのログファイルが あってそれを全部csvに変換したい。 r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 128 57012 87772 664448 0 0 12 10 75 68 0 1 98 1 0 0 0 128 59368 87772 664480 0 0 0 0 189 90 7 4 89 0 0 0 0 128 59368 87772 664480 0 0 0 0 174 80 4 3 93 0 0 0 0 128 59368 87772 664480 0 0 0 0 159 90 6 3 91 0 0 0 0 128 59376 87772 664480 0 0 0 0 139 63 4 3 93 0 0 0 0 128 59376 87772 664480 0 0 0 0 165 86 4 4 92 0 0 0 0 128 59376 87780 664480 0 0 0 60 161 80 5 3 92 0 0 ~~~~~ 1万行くらい~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 0 0 128 59376 87780 664480 0 0 0 0 174 92 5 5 90 0 0 0 0 128 59376 87780 664480 0 0 0 0 144 66 6 3 91 0 0 0 0 128 59376 87780 664480 0 0 0 0 156 82 5 3 92 0 0 0 0 128 59376 87780 664480 0 0 0 0 156 77 4 4 92 0 0 0 0 128 59376 87784 664480 0 0 0 28 163 94 5 4 91 0 0 0 0 128 59376 87784 664480 0 0 0 0 143 69 4 3 93 0 0 0 0 128 59376 87784 664480 0 0 0 0 160 81 6 3 91 0 0 0 0 128 59376 87780 664480 0 0 0 0 144 66 6 3 91 0 0 0 0 128 59376 87780 664480 0 0 0 0 156 82 5 3 92 0 0 0 0 128 59376 87780 664480 0 0 0 0 156 77 4 4 92 0 0 0 0 128 59376 87784 664480 0 0 0 28 163 94 5 4 91 0 0 0 0 128 59376 87784 664480 0 0 0 0 143 69 4 3 93 0 0 0 0 128 59376 87784 664480 0 0 0 0 160 81 6 3 91 0 0 このようなファイルが100個くらいある。 #getconf ARG_MAX 32000 ←引数3200個までは大丈夫 vmstat:実行待ちプロセス数、割り込み回数、消費メモリ、 カーネル/ユーザ/アイドルのCPU使用率、 コンテキストスイッチ数などを取得するコマンド。 11
  • 12. 【コマンド】 コマンド機能オプションなど意味 sed 文字列置換。-r 正規表現使用 s/条件/文字/g 条件を文字列に置換 find ファイル検索-type f:ファイル、d:ディレクトリ、l:シンボ リックリンク -name ファイル名のパターン -print0 区切り文字を0にする。 xargs ARG_MAX以 下になるように 分割してコマン ド実行 -0 区切り文字を0にする。 -PN 並列数N。0は最大限の並列化。 -t コマンドを標準エラー出力。 -I str strを標準入力の引数に置換。 12
  • 13. #!/bin/sh 0以上の連続するスペースを,に置換し、拡張子 csvで保存。 function func() { sed -r "s/[ ]+/,/g" "$1" > "$1.csv" } export -f func カレントディレクトリの*.logファイルのパスを引数 にしてfuncを呼び出す。 区切り0にしないとパスのスペースで区切られる。 find . -type f –maxdepth 1 -name "*.log" -print0 | xargs -0 -P0 -t -I %arg bash -c "func %arg" シングルクォーテーション’⇒シェル展開しない。 ダブルクォーテーション”⇒シェル展開する。 13
  • 14. 【コマンド】 コマンド機能オプションなど意味 du ディスク使用容 量。 -m メガバイト単位。 -k キロバイト単位。 -h M/K/Gを自動で選択する。 -s サブディレクトリを除く。 sort ソート-r 降順でソート。 -n 数値としてソート。 -u 重複排除。 14
  • 15. C:cygwinusr>du -sk ./* | sort -rn 409122 ./share 378867 ./ppc 343904 ./lib 166279 ./bin 63405 ./include 47820 ./src 28486 ./i686-pc-mingw32 2432 ./libexec 413 ./sbin 6 ./i686-pc-cygwin 3 ./ssl カレントディレクトリの各ディレクトリの使 用容量を降順でソート Windosのsortが優先される場合があ るので注意 パス検索の順序確認 >where sort C:cygwinbinsort.exe C:WindowsSystem32sort.exe 15
  • 16. 【コマンド】 コマンド機能オプションなど意味 awk 文字列処理用 (gawk) 言語。 -F 区切り文字 {cmd1} END{cmd2} cmd1:各行で実行 cmd2:最後に実行 構文:awk ‘program’ [file ...] gawk -F, ‘{print $2 $5}’ xx.csv ⇒csvの各行の2、5列目を表示。 gawk -F, ‘{printf “data10:%dn”, $10}’ xx.csv ⇒data10: dataという出力形式。 gawk -F, ‘BEGIN{print “START”} {printf “data10:%dn”, $10} END{print “END”}’ xx.csv ⇒最初にSTART/最後にENDと表示。 16
  • 17. gawk -F, ‘{print $5}’ x.csv | sort -nr | head -n 1 5列目の最大値を表示。 head –n N:先頭からN行を表示。 gawk -F, ‘{sum +=$5} END{print sum / NR}’ x.csv 5列目の平均を表示。 NR:行数 ※数値以外が含まれる場合の考慮はしていない。 17
  • 18. 【コマンド】 コマンド機能オプションなど意味 ps プロセス表示。aux a:全ユーザー、u:ユーザ名と開始 時刻、x:全プロセス grep 文字列の検索-v マッチしない行を表示。 -A num -B num A:マッチ行の前num行を表示。 B:マッチ行の後num行を表示。 -E 拡張正規表現(ERE)使用。egrepと 同様。 wc 行数などを表 示。 -c バイト数をカウント。 -w 単語数をカウント。 -l 行数をカウント。 なし行数、単語数、バイト数をカウント。 pgrep PIDを取得。-x 完全一致のプロセスのPIDを取得。 18
  • 19. #!/bin/sh threshold=3 count=$(ps aux | grep "$1" | grep -v "grep" | wc -l) if [ "$count" -ge "$threshold" ]; then echo "[WARNING]$count" fi psから引数のプロセスを抽出。 pgrep –x ”$1”でもよい。 psからgrepを除き、行 数を取得。 プロセス数が閾値以上ならばメッセージを表示。 watchコマンド、whileなどで定期実行しておく。 19
  • 20. 【コマンド】 ヒアドキュメント cmd<<xxでcmdにデータを渡すことができる。 cmd<<-xxとすると行頭のタブが無視される。 xxを’で囲むと変数、コマンドが展開されない。 例) mail –s ’タイトル’ <<EOF メール本文 EOF 20
  • 21. #!/bin/sh ftp –n “192.168.100.1” << EOF #ftp –n 標準入力からログイン情報を取得。 user ’hasegawa’ ’password’ binary #binaryモード cd ../ mget ”*.log” EOF ログインしてbinaryモードに切り替えて、 ログディレクトリに移動して*.logを取得 する。 21
  • 22. PowerShellについては近々紹介予定。 Windowsの設定を自動化できる。 C:WINDOWSsystem32WindowsPowerShellv 1.0 $adapters=Get-WmiObject -Class Win32_NetworkAdapterConfiguration - ComputerName. -Filter "IPEnabled='True'“ $adapters[0].EnableStatic(“192.168.200.100”,” 255.255.255.0”) 22
  • 23. $ip=@() $mask=@() $ip+=“1.1.1.1” $ip+=”2.2.2.2” $mask+=“255.0.0.0” $mask+=“255.0.0.0” 16個IPアドレスを設定するのもスクリ プトでやれば簡単 $adapters[0].EnableStatic($ip, $mask) 23