Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Kei IWASAKI
13,456 views
3分でサーバオペレーションコマンドを作る技術
#pyconjp 2015 の LTで発表した際に利用した資料です https://pycon.jp/2015/ja/schedule/presentation/93/
Technology
◦
Read more
16
Save
Share
Embed
Embed presentation
Download
Downloaded 22 times
1
/ 52
2
/ 52
3
/ 52
4
/ 52
5
/ 52
6
/ 52
7
/ 52
8
/ 52
9
/ 52
10
/ 52
11
/ 52
12
/ 52
13
/ 52
14
/ 52
15
/ 52
16
/ 52
17
/ 52
18
/ 52
19
/ 52
20
/ 52
21
/ 52
22
/ 52
23
/ 52
24
/ 52
25
/ 52
26
/ 52
27
/ 52
28
/ 52
29
/ 52
30
/ 52
31
/ 52
32
/ 52
33
/ 52
34
/ 52
35
/ 52
36
/ 52
37
/ 52
38
/ 52
39
/ 52
40
/ 52
41
/ 52
42
/ 52
43
/ 52
44
/ 52
45
/ 52
46
/ 52
47
/ 52
48
/ 52
49
/ 52
50
/ 52
51
/ 52
52
/ 52
More Related Content
PDF
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
by
Kei IWASAKI
PDF
Sphinx HTML Theme Hacks
by
Shoji KUMAGAI
PDF
第1回python勉強会
by
Yoshio Shimomura
PDF
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
by
aoshiman
PDF
PowerShellが苦手だった男がPowerShellを愛するようになるまで
by
Kazuhiro Matsushima
PDF
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
by
Takanori Suzuki
PDF
"Continuous Publication" with Python: Another Approach
by
Daisuke Miyakawa
PDF
Python × Herokuで作る 雑談slack bot
by
dcubeio
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
by
Kei IWASAKI
Sphinx HTML Theme Hacks
by
Shoji KUMAGAI
第1回python勉強会
by
Yoshio Shimomura
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
by
aoshiman
PowerShellが苦手だった男がPowerShellを愛するようになるまで
by
Kazuhiro Matsushima
「Python言語」はじめの一歩 / First step of Python / 2016 Jan 12
by
Takanori Suzuki
"Continuous Publication" with Python: Another Approach
by
Daisuke Miyakawa
Python × Herokuで作る 雑談slack bot
by
dcubeio
What's hot
PDF
Pythonを取り巻く開発環境 #pyconjp
by
Yoshifumi Yamaguchi
PDF
Sphinx customization for OGP support at SphinxCon JP 2018
by
Takayuki Shimizukawa
PDF
「Python言語」はじめの一歩 / First step of Python
by
Takanori Suzuki
PDF
Python入門
by
Shohei Okada
ODP
Sourcecode Reading Workshop2010
by
Hiro Yoshioka
PDF
密着!わたしのコンソールアプリ開発環境
by
Fumihito Yokoyama
KEY
ひのきのぼうだけで全クリ目指す
by
AromaBlack
PDF
PyQtではじめるGUIプログラミング
by
Ransui Iso
PPTX
doctest を書こう @ pycon kansai
by
YosukeHojo
PPTX
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
by
SaitoTsutomu
ODP
シェルスクリプトを極める
by
bsdhack
PDF
Good Parts of PHP and the UNIX Philosophy
by
Yuya Takeyama
ODP
仕事で使えるシェルスクリプト
by
bsdhack
PPTX
FINAL FANTASY Record Keeperを支えたGolang
by
Yoshiki Shibukawa
PDF
シェル芸初心者によるシェル芸入門
by
icchy
PDF
R を起動するその前に
by
Kosei ABE
ODP
Introduction of Python
by
Tomoya Nakayama
PDF
Hubotをはじめる
by
nasa9084
PDF
Python3 プログラミング勉強会
by
Tetsuya Morimoto
Pythonを取り巻く開発環境 #pyconjp
by
Yoshifumi Yamaguchi
Sphinx customization for OGP support at SphinxCon JP 2018
by
Takayuki Shimizukawa
「Python言語」はじめの一歩 / First step of Python
by
Takanori Suzuki
Python入門
by
Shohei Okada
Sourcecode Reading Workshop2010
by
Hiro Yoshioka
密着!わたしのコンソールアプリ開発環境
by
Fumihito Yokoyama
ひのきのぼうだけで全クリ目指す
by
AromaBlack
PyQtではじめるGUIプログラミング
by
Ransui Iso
doctest を書こう @ pycon kansai
by
YosukeHojo
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
by
SaitoTsutomu
シェルスクリプトを極める
by
bsdhack
Good Parts of PHP and the UNIX Philosophy
by
Yuya Takeyama
仕事で使えるシェルスクリプト
by
bsdhack
FINAL FANTASY Record Keeperを支えたGolang
by
Yoshiki Shibukawa
シェル芸初心者によるシェル芸入門
by
icchy
R を起動するその前に
by
Kosei ABE
Introduction of Python
by
Tomoya Nakayama
Hubotをはじめる
by
nasa9084
Python3 プログラミング勉強会
by
Tetsuya Morimoto
Viewers also liked
PDF
Django から各種チャットツールに通知するライブラリを作った話
by
Yusuke Miyazaki
PDF
sqldf for pandas
by
airtoxin Ishii
PDF
pandasによるデータ加工時の注意点やライブラリの話
by
Masashi Shibata
PDF
SekainoKAO by TeamKAO
by
Hideki
PDF
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
by
Katayanagi Nobuko
PPTX
Sphinxで作る貢献しやすいドキュメント翻訳の仕組み
by
Takayuki Shimizukawa
PDF
Ry pyconjp2015 karaoke
by
Renyuan Lyu
PDF
Python と型ヒント (Type Hints)
by
Tetsuya Morimoto
PDF
アドネットワークのデータ解析チームを支える技術
by
hagino 3000
PDF
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
by
cocodrips
PDF
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
by
Shinichi Nakagawa
PDF
日本のオープンデータプラットフォームをPythonでつくる
by
Yuta Kashino
PDF
営業・運用を支える "気付ける" 管理画面
by
Masao Maeda
PDF
フリーでやろうぜ!セキュリティチェック!
by
zaki4649
PDF
いまどきのPHP開発現場 -2015年秋-
by
Masashi Shinbara
PDF
癒し系ネットワーク機器をPingで起こす
by
Shinichi Hirauchi
PDF
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
by
Masayuki Ishikawa
PPTX
クラウドハニーポットを運用しよう!
by
Mizutani Masayoshi
PDF
初心者のためのWeb標準技術
by
Shogo Sensui
PPTX
Behat Driven Development
by
Ryo Tomidokoro
Django から各種チャットツールに通知するライブラリを作った話
by
Yusuke Miyazaki
sqldf for pandas
by
airtoxin Ishii
pandasによるデータ加工時の注意点やライブラリの話
by
Masashi Shibata
SekainoKAO by TeamKAO
by
Hideki
PyLadies Tokyo - 初心者向けPython体験ワークショップ開催の裏側
by
Katayanagi Nobuko
Sphinxで作る貢献しやすいドキュメント翻訳の仕組み
by
Takayuki Shimizukawa
Ry pyconjp2015 karaoke
by
Renyuan Lyu
Python と型ヒント (Type Hints)
by
Tetsuya Morimoto
アドネットワークのデータ解析チームを支える技術
by
hagino 3000
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
by
cocodrips
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
by
Shinichi Nakagawa
日本のオープンデータプラットフォームをPythonでつくる
by
Yuta Kashino
営業・運用を支える "気付ける" 管理画面
by
Masao Maeda
フリーでやろうぜ!セキュリティチェック!
by
zaki4649
いまどきのPHP開発現場 -2015年秋-
by
Masashi Shinbara
癒し系ネットワーク機器をPingで起こす
by
Shinichi Hirauchi
サンタクロースを支えるIT技術 @M_Ishikawa #yapcasia
by
Masayuki Ishikawa
クラウドハニーポットを運用しよう!
by
Mizutani Masayoshi
初心者のためのWeb標準技術
by
Shogo Sensui
Behat Driven Development
by
Ryo Tomidokoro
Similar to 3分でサーバオペレーションコマンドを作る技術
KEY
Fabricでサーバー管理をDRYにしよう
by
max747
PDF
Kubernetes で実践するクラウドネイティブ DevOps "監視とオブザーバビリティ"編 / Cloud Native DevOps with K...
by
Preferred Networks
PPTX
明日から始める Chef 入門 #bpstudy
by
Takeshi Komiya
PDF
社内向けTech Talk資料~Fluentdの基本紹介~
by
Daisuke Ikeda
PDF
2日間Fabricを触った俺が 色々解説してみる
by
airtoxin Ishii
PPTX
ClickでCLIをお手軽につくるぅぅぅ
by
Kazufumi Ohkawa
PDF
Rails と Rack と HTTP と通信の話
by
Progate, Inc.
PDF
debugging server with strace
by
Yoshinari Takaoka
KEY
Automation tech casual_talks_1_20120717
by
Makoto Haruyama
PDF
Fabric + Amazon EC2で快適サポート生活 #PyFes
by
Sho Shimauchi
PDF
Python で munin plugin を書いてみる
by
ftnk
PDF
そろそろSSH/Telnetを離れて自動化したい
by
netopscoding
PPTX
Fabric
by
zhengen lin
PDF
エコなWebサーバー
by
emasaka
PDF
お手軽並列処理
by
博文 斉藤
PDF
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
by
博文 斉藤
PDF
Scapy presentation
by
ashigirl ZareGoto
PDF
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
by
Yukihiko SAWANOBORI
PDF
Fabric Essentials
by
Yoshinari Takaoka
PDF
Tottoruby 20110903
by
Takashi SAKAGUCHI
Fabricでサーバー管理をDRYにしよう
by
max747
Kubernetes で実践するクラウドネイティブ DevOps "監視とオブザーバビリティ"編 / Cloud Native DevOps with K...
by
Preferred Networks
明日から始める Chef 入門 #bpstudy
by
Takeshi Komiya
社内向けTech Talk資料~Fluentdの基本紹介~
by
Daisuke Ikeda
2日間Fabricを触った俺が 色々解説してみる
by
airtoxin Ishii
ClickでCLIをお手軽につくるぅぅぅ
by
Kazufumi Ohkawa
Rails と Rack と HTTP と通信の話
by
Progate, Inc.
debugging server with strace
by
Yoshinari Takaoka
Automation tech casual_talks_1_20120717
by
Makoto Haruyama
Fabric + Amazon EC2で快適サポート生活 #PyFes
by
Sho Shimauchi
Python で munin plugin を書いてみる
by
ftnk
そろそろSSH/Telnetを離れて自動化したい
by
netopscoding
Fabric
by
zhengen lin
エコなWebサーバー
by
emasaka
お手軽並列処理
by
博文 斉藤
日本 GNU AWK ユーザー会チラシ - OSC2012 Tokyo/Fall
by
博文 斉藤
Scapy presentation
by
ashigirl ZareGoto
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
by
Yukihiko SAWANOBORI
Fabric Essentials
by
Yoshinari Takaoka
Tottoruby 20110903
by
Takashi SAKAGUCHI
More from Kei IWASAKI
PDF
コロナ渦とキャリアの話 / my carrier and covid-19
by
Kei IWASAKI
PDF
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24
by
Kei IWASAKI
PDF
Elasticbeanstalk で Ansible を使っている話
by
Kei IWASAKI
PDF
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
by
Kei IWASAKI
PDF
Pelican の紹介 / World Plone Day 2017 Tokyo
by
Kei IWASAKI
PDF
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
by
Kei IWASAKI
PDF
Vagrant+virtualboxを使ってみよう
by
Kei IWASAKI
PDF
障害発生時に抑えておきたい基礎知識
by
Kei IWASAKI
PDF
監視のススメ
by
Kei IWASAKI
コロナ渦とキャリアの話 / my carrier and covid-19
by
Kei IWASAKI
Collaboration hack with slackbot - PyCon HK 2018 - 2018.11.24
by
Kei IWASAKI
Elasticbeanstalk で Ansible を使っている話
by
Kei IWASAKI
入門書を読み終わったらなにしよう? 〜Python と WebAPI の使い方から学ぶ次の一歩〜 / next-step-python-programing
by
Kei IWASAKI
Pelican の紹介 / World Plone Day 2017 Tokyo
by
Kei IWASAKI
たった一ファイルの python スクリプトから始めるOSS開発入門 / PyCon JP 2016
by
Kei IWASAKI
Vagrant+virtualboxを使ってみよう
by
Kei IWASAKI
障害発生時に抑えておきたい基礎知識
by
Kei IWASAKI
監視のススメ
by
Kei IWASAKI
3分でサーバオペレーションコマンドを作る技術
1.
GMO Pepabo, Inc. Kei
IWASAKI 2015/10/10 PyConJP 2015 Lightning Talks 3分で サーバオペレーションコマンドを作る技術
2.
お前誰?
3.
お前誰? > Kei IWASAKI >
twitter: @laugh_k > Github: laughk > GMO Pepabo, Inc. > 技術部インフラグループ > System Administrator > PyConJP 初参加!
4.
3分で
5.
サーバオペレーション コマンドを作る技術
6.
サーバオペレーションコマンド is 何?
7.
Web系インフラエンジニアが 日々のサーバオペレーションを 楽にするためのコマンドラインツール
8.
とりわけ
9.
SSHで1台ずつログインをして 複数サーバに同様のコマンドを叩く たんぽぽワークを楽にする コマンドラインツール
10.
という前提で お話させていただきます
11.
紹介するライブラリ
12.
fabric と Click
13.
ライブラリとしての fabric
14.
ライブラリとしてのfabric > fabric とは >
python製デプロイツールでお馴染み > pythonでデプロイに必要なSSH越しのジョ ブを定義できる
15.
ライブラリとしてのfabric > こんな感じで fabfile.py
を用意して from fabric.api import run def ping(): run('uname -n')
16.
ライブラリとしてのfabric > fabコマンド経由でジョブを実行できる $ fab
-f fabfile.py ping -H hoge1.example.com,hoge2.example.com [hoge1.example.com] Executing task 'ping' [hoge1.example.com] run: uname -n [hoge1.example.com] Login password for 'vagrant': [hoge1.example.com] out: hoge1.example.com [hoge1.example.com] out: [hoge2.example.com] Executing task 'ping' [hoge2.example.com] run: uname -n [hoge2.example.com] out: hoge2.example.com [hoge2.example.com] out: Done. Disconnecting from hoge1.example.com... done. Disconnecting from hoge2.example.com... done.
17.
ライブラリとしてのfabric > 便利なAPI > run
... シェルコマンド実行 > sudo ... sudo 付きでシェルコマンド実行 > put ... リモートホストにファイルを置く > get ... リモートホストからファイルを取ってくる > put, get には use_sudo オプションあり > などなど
18.
便利ですね!
19.
ライブラリとして利用すると 作り込む時にすごく ります
20.
ライブラリ としての利用で使うもの
21.
fabric.api.execute
22.
ライブラリとしてのfabric > executeを使うと何ができるか? > ざっくり言うと >
python のコードから > と同じことができるよ! $ fab -f fabfile.py <jobname> -H <hostname>
23.
ライブラリとしてのfabric > こんな感じ > sample.py from
fabric.api import run, execute def ping(): run('uname -n’) if __name__ == ‘__main__': execute(ping, hosts=[ 'hoge1.example.com', 'hoeg2.example.com' ])
24.
ライブラリとしてのfabric > 実行 $ python
sample.py [hoge1.example.com] Executing task 'ping' [hoge1.example.com] run: uname -n [hoge1.example.com] Login password for 'vagrant': [hoge1.example.com] out: hoge1.example.com [hoge1.example.com] out: [hoge2.example.com] Executing task 'ping' [hoge2.example.com] run: uname -n [hoge2.example.com] out: hoge2.example.com [hoge2.example.com] out:
25.
python スクリプトとして 完結させられる
26.
ということは
27.
fabコマンドを意識しない 自分の業務に特化した スクリプトも作れる
28.
ライブラリとしてのfabric > 例えばこんな fabfile.py from
fabric.api import sudo def show_httpd_log(): sudo('tail -10000 /var/log/httpd/access_log') def show_db_slowlog_count(): sudo('tail -100000 /var/lib/mysql/slow.log > /tmp/fab-slow.log') sudo('mysqldumpslow -c /tmp/fab-slow.log') sudo('rm -fv /tmp/fab-slow.log')
29.
ライブラリとしてのfabric > 例えばこんな感じでスクリプト化 import argparse from
fabric.api import run, sudo, execute def show_httpd_log(): sudo('tail -10000 /var/log/httpd/access_log’) def show_db_slowlog_count(): sudo('tail -100000 /var/lib/mysql/slow.log > /tmp/fab-slow.log') sudo('mysqldumpslow -c /tmp/fab-slow.log') sudo('rm /tmp/fab-slow.log') if __name__ == '__main__': parser = argparse.ArgumentParser() ...
30.
pythonで コマンドラインツールを作るなら
31.
argparse の出番!
32.
ではあるけれど なかなか扱いが大変
34.
つらい
35.
オプションが増えたり サブコマンドを生やすと コードの可読性を保つのがしんどい
36.
Python mini hack-a-thon にて
37.
“–Thanks!! @shimizukawa 「ClickっていうCLIのフレームワークがあるよ」
38.
Click
39.
Click > CLIツールを作るためのフレームワーク > デコレータでオプションやパラメータと実際に処理を行う 関数をいい感じに紐付けられる >
いい感じにhelpメッセージを出してくれる > bash-completion の自動生成が可能 > オプションやサブコマンドと関数の関係がわかりやすい > などなど
40.
Click > 例. サブコマンド import
click @click.group() def main(): pass @click.command() @click.argument('name') def sub1(name): click.echo('sub1: Hello {0}'.format(name)) @click.command() @click.option('-N','--name') def sub2(name): click.echo('sub2: Hello {0}'.format(name)) main.add_command(sub1) main.add_command(sub2) if __name__ == '__main__': main()
41.
Click > 例. サブコマンド
実行結果 $ python cli.py sub1 laughk sub1: Hello laughk $ python cli.py sub2 -N laughk sub2: Hello laughk
42.
Click > 例. サブコマンド
実行結果 $ python cli.py Usage: cli.py [OPTIONS] COMMAND [ARGS]... Options: --help Show this message and exit. Commands: sub1 sub2 $ python cli.py sub1 --help Usage: cli.py sub1 [OPTIONS] NAME Options: --help Show this message and exit. $ python cli.py sub2 --help Usage: cli.py sub2 [OPTIONS] Options: -N, --name TEXT --help Show this message and exit.
43.
便利ですね!!
44.
fabric と Click
を 組み合わせてみる
45.
fabricとClick > コードはこんな感じ (nginx.py
として作成 ) import click from fabric.api import sudo, execute, env def _show_access_log(): sudo('tail -10 /var/log/nginx/munin-access.log') @click.group() def main(): pass @click.command('access_log') def show_access_log(): execute(_show_access_log) main.add_command(show_access_log) if __name__ == '__main__': env.hosts = [ 'hoge1.example.com', 'hoge2.example.com' ] main()
46.
fabricとClick > 結果 $ python
nginx.py access_log [hoge1.example.com] Executing task '_show_access_log' [hoge1.example.com] sudo: tail -10 /var/log/nginx/munin-access.log [hoge1.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET / HTTP/1.1" 200 2006 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69" [hoge1.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/style-new.css HTTP/1.1" 200 4049 "http://10.0.12.23/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69" [hoge1.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/logo-h.png HTTP/1.1" 200 1399 "http://10.0.12.23/static/style- new.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/ 32.0.1948.69" [hoge1.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/favicon.ico HTTP/1.1" 200 2046 "http://10.0.12.23/" "Mozilla/ 5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69" [hoge1.example.com] out: [hoge2.example.com] Executing task '_show_access_log' [hoge2.example.com] sudo: tail -10 /var/log/nginx/munin-access.log [hoge2.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET / HTTP/1.1" 200 2006 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69" [hoge2.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/style-new.css HTTP/1.1" 200 4049 "http://10.0.12.23/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69" [hoge2.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/logo-h.png HTTP/1.1" 200 1399 "http://10.0.12.23/static/style- new.css" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/ 32.0.1948.69" [hoge2.example.com] out: 10.0.12.40 - - [10/Oct/2015:01:53:45 +0900] "GET /static/favicon.ico HTTP/1.1" 200 2046 "http://10.0.12.23/" "Mozilla/ 5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69" [hoge2.example.com] out:
47.
便利ですね!!1
48.
補足
49.
fabricとClick > 補足 > click
は先に setup.py を書いておくと開発しやすいし 各種環境への配布も楽 > 業務に便利なコマンドは踏み台サーバにインストールし ておくと布教しやすいのでオススメ > 詳細な使い方はそれぞれの公式ドキュメントが情報豊富 > fabric http://docs.fabfile.org/ > Click http://click.pocoo.org
50.
まとめ
51.
まとめ > SSH 経由のオペレーションは
fabric > コマンドラインツールとしての機能は Click > fabric Click の組み合わせはお手軽で非常にオススメ
52.
Let's Try! pip install
fabric pip install Click
Download