ããã
fabã®runã³ãã³ããå®è¡ããŠããã€ãã®ç°å¢å€æ°ãè¿œå ãããã¹å€æ°ãå±éãããšãã«ã.bashrcãã¡ã€ã«ïŒã€ãŸãããœãŒã¹/home/ubuntu/.bashrcïŒãããŒãããããšããŠããŸãã
runïŒ 'source /home/ubuntu/.bashrc && echo $ PATH'ïŒ
ããã¯ç§ã ãã瀺ããŠããŸãïŒ
[[email protected]] outïŒ/ usr / local / sbinïŒ/ usr / local / binïŒ/ usr / sbinïŒ/ usr / binïŒ/ sbinïŒ / binïŒ/ usr / gamesïŒ/ usr / local / games
ãªã¢ãŒããµãŒããŒã«æåã§ãã°ã€ã³ãããšãã«è¡šç€ºããããã¹ã®ãªã¹ããã¯ããã«é·ããªã代ããã«ã
ãªã¢ãŒãããŒã ãã£ã¬ã¯ããªã«.bashrcãã¡ã€ã«ãæ£ããã€ã³ããŒãããããã«fabãååŸããã«ã¯ã©ãããã°ããã§ããïŒ
ããããšãããããŸããïŒ
ããã¯bashã®ãã®ã§ãããfabã®ãã®ã§ã¯ãããŸããã
bashãèµ·åæã«ãœãŒã¹ããããšã決å®ãããã¡ã€ã«ã¯è€éã«ãªãå¯èœæ§ããããŸãhttp://blog.flowblok.id.au/2013-02/shell-startup-scripts.htmlããã³debian / ubuntuïŒããã³ã»ãšãã©ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ïŒã¯/etc/profile
ã§ããã€ãã®ã«ã¹ã¿ãã€ãºããã~/.bashrc
ã
ããã©ã«ãã®ã·ã§ã«ãã¡ãã䜿çšããã®ã¯/bin/bash -l -c
ã§ã -l
ã¯ãããããã°ã€ã³ãã·ã§ã«ã«ããŸãã debian / ubuntuã®ã«ã¹ã¿ãã€ãºããªããšãbashã®ããã°ã€ã³ãã·ã§ã«ã~/.bash_profile
ãã ~/.bashrc
ã¯ã§ããŸããã
ããããubuntu 16.04ã§ã¯ããã°ã€ã³ã·ã§ã«ã®å Žåã§ãããã©ã«ãã§.bashrc
ããŠããããã§ãã ãã ããããã©ã«ãã®.bashrc
ã®äžéšã«è¿œå ãããè¡ã¯ãé察話çã«å®è¡ãããŠããããšãæ€åºãããšäžéšè¿ãã§ãã€ã«ã¢ãŠããããããåŠçãããŸããã
ããã§ã¯ãubuntu-16.04ã®ããã©ã«ããŠãŒã¶ãŒ.bashrc
2è¡ãè¿œå ããŸãã
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
export VAR1=val1
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
export VAR2=val2
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
...
ãããç§ããã¹ãããŠããfabfileã§ãïŒ
from fabric.api import run, env, task
<strong i="23">@task</strong>
def get_myvars():
run("echo VAR1=$VAR1 VAR2=$VAR2")
çµæïŒ
$ fab -H testpy05.ec2.st-av.net get_myvars
[testpy05.ec2.st-av.net] Executing task 'get_myvars'
[testpy05.ec2.st-av.net] run: echo VAR1=$VAR1 VAR2=$VAR2
[testpy05.ec2.st-av.net] out: VAR1=val1 VAR2=
[testpy05.ec2.st-av.net] out:
...
äžèŠæ£åœã«èãããŸãã@ ploxilnã«æè¬ããŸãïŒ
詳现ãªåçããããšãããããŸãïŒ
ããã¯æšæºã®sshã®åäœãšã¯ç°ãªãããã§ããããã°ãå°é£ã§ããã æåã§sshãå®è¡ãããšããã¹ãŠæ£åžžã«æ©èœããŸããããOSXã§.bash_profileãå®è¡ããŠããªãããããã¡ããªãã¯ã®PATHå€ãç°ãªã£ãŠããŸããã
@bitprophetããã¯OSXã®ãã°ãããããŸãããïŒ
@ code-treeãã¡ããªãã¯1ãŸãã¯2ã䜿çšããŠããŸããïŒ 1.xã¯æ瀺çãªã·ã§ã«ã©ãããŒã䜿çšãããããæšæºã®OpenSSHã¯ã©ã€ã¢ã³ããšã¯ç°ãªããŸãã ããŒãžã§ã³2ã¯ã©ããã³ã°ãè¡ãããsshdããŠãŒã¶ãŒã«ä»£ãã£ãŠå®è¡ããŠããããšã«é¢ããŠãOpenSSHã¯ã©ã€ã¢ã³ãã®ããã«åäœããã¯ãã§ãã
ããŒãžã§ã³1ã«ã¯ããã®ã·ã§ã«ã©ãããŒãå€æŽããããã®ããã€ãã®env config valueãªãã·ã§ã³ããããããIIRCããã€ã³ã¿ã©ã¯ãã£ãã¢ãŒããå®è¡ããŠããã€ãã®è¿œå ãã¡ã€ã«ã調éãããããã®bashã§ãã-i
ãªã©ã®ãã©ã°ãè¿œå ããŠã¿ãŠãã ããã
ç§ã¯ããŒãžã§ã³2.2.1
ã䜿çšããŠããã®ã§ãããã¯å¥åŠã§ãã ç§ã¯çŸåšãã¢ããªãæ©èœãããããã«æ¬¡ã®ããšãè¡ãå¿
èŠããããŸãã
c.run('bash -l -c "python3 ./configure.py"')
Python 3ãã€ã³ã¹ããŒã«ãããšããšåãããã«ãFabricã«ãã£ãŠå®è¡ãããŠããªã.bash_profile
ãä»ããŠPATHã«è¿œå ãããŸããã æšæºã®çµã¿èŸŒã¿sshdæ§æã«ãå€æŽãå ããŠããŸããã
ããã¯å¥åŠãªããšã§ããç§ã¯ç§ãè€è£œã§ãããã©ãããèŠãªããã°ãªããŸããã ç§ãäœãæå³ããã®ãã蚌æããããã«ãç°¡åãªå¥å šæ§ãã¬ãŒã¹ãå®è¡ããŸãããreïŒãã¡ããªãã¯2ã¯äœãããŠããŸãã 'ç¹å¥ãª' reïŒsshdé§åã®å®è¡ïŒ
command
ããããŸãcommand
è¿œå ã®å€æŽãå ããããšãªããChannel.exec_commandãåŒã³åºãã ãã§ããssh myserver <command>
ããããã@ code-treeããå¯èœã§ããã°ãå®è¡ããŠããå 容ãšãã®ä»ã®ç°å¢ã®è©³çŽ°ïŒã¯ã©ã€ã¢ã³ããšãµãŒããŒã®OS /ããŒãžã§ã³ãªã©ïŒã«é¢ãã詳现ãæçš¿ããŠãã ããã
確ãã«ãç§ã¯å€ãOSXããŒãžã§ã³ããµãŒããŒãšããŠå®è¡ããŠããŸãã æ°ããMacOSã§ãã¹ãŠãæ£åžžã«æ©èœããããšã確èªã§ããã°ããŸããŸãã ããããããã§ãªãå Žåã¯ãäžè¬çãªãµãŒããŒãšããŠã®MacOSã®åé¡ã§ããããïŒ
ã¡ãªã¿ã«ããããå®éã«èª€èšºã®ã±ãŒã¹ã§ãããã©ããçåã«æã£ãŠããŸãã
OSXã§.bash_profileãå®è¡ããŠããªãããããã¡ããªãã¯ã®PATHå€ãç°ãªããŸã
代ããã«ãããã¯ïŒ1744ã®äŸã§ããå¯èœæ§ããããŸããããã§ããã¡ããªãã¯2ã¯ãããŒã«ã«ç°å¢å€æ°ããã€ãã«ã·ã£ã³ããããšããç¹ã§ssh
ãšã¯ç°ãªããŸããïŒ ïŒåé¡ã®æ£ç¢ºãªenvå€æ°ãšãããããããŒã«ã«ãšãªã¢ãŒãã§é¡äŒŒããŠãããã©ããã«ãã£ãŠç°ãªããŸãã@ code-treeã¯ãããŒã«ã«ãšãªã¢ãŒãã®bash_profileã§æ£ç¢ºãªå€ãå確èªããããšã§ããã®çè«ãç°¡åã«å蚌ã§ããŸã...ðïŒ
ãããããšã«ãããããçŽæ¥ãã©ãã«ã·ã¥ãŒãã£ã³ã°ããã€ããã§ããããã§ãç§ã¯æ°ãçã£ãŠããªãããšãããããŸããã·ã§ã«ãšãœãŒã¹ãã¡ã€ã«ã«é¢ããŠsshdãäœãããŠããã®ããç解ããŠããŸãã
ãŸããããã¯ïŒ1816ã®ã·ããªãª/ã€ã³ããªãžã§ã³ã¹ã«é¢é£ããŠããã®ã§ã¯ãªãããšæããŸãããããã·ã§ã«ãšã¹ã¿ãŒãã¢ãããã¡ã€ã«ã«é¢ãããã®ã§ãã ssh
äžæ¹åã«åäœããFabricãå¥ã®æ¹åã«åäœããïŒãsshdãéåžžã·ã§ã«ãåŒã³åºãæ¹æ³ãã§ã¯ãªãïŒãšããã¢ãµãŒã·ã§ã³ããããããçŽæ¥é¢ä¿ã¯ãããŸãããããšã«ãããªã³ã¯ãã䟡å€ããããŸãã
ãããã®ç·ã«æ²¿ã£ãäœãã«é¢é£ããŠãç§ãéå»æ°ã¶æã«è¡ã£ãããšãèŠããŠããããããã®æ·±ãsshdã³ãŒããã€ãã³ã°ã«ã€ãŸããããšããŠããããšãããããŸããã ã€ã©ã€ã©ããŸãããä»ã¯èŠã€ãããŸããã ç·šéïŒãããèªèšŒåã«ã³ãã³ããå®è¡ããããšã«é¢ããŠãããã¯ç¡é¢ä¿ã®Paramikoã®åé¡ïŒæ··ä¹±ããç¹ããªããããªã³ã¯ãããŠããªãïŒã ã£ããšæããŸãã ããã£ãã
ã§ã¯ãã³ãã³ãexecãèŠæ±ãããšãå®éã«äœãèµ·ãã£ãŠããã®ã§ããããã
shell
ãã£ãã«èŠæ±ïŒãŠãŒã¶ãŒãå®çŸ©ãããã°ã€ã³ã·ã§ã«ããã°ã©ã ãããŒããã command
ïŒãŸãã¯exec
ãã£ãã«ãäœæããå¿
èŠããããŸãããªã¯ãšã¹ãïŒããã¹ãå«ãŸããŠããå¯èœæ§ã®ããç¹å®ã®ã³ãã³ãæååãå®è¡ããããšã ã衚瀺ããããã以äžã¯æå®ãããŸããïŒ775f8a23f2353f5869003c57a213d14b28e0736e
ïŒããŠãæåã«å°ãéæãããŸãã ä»»æã®Debian8.10ã³ã³ããïŒOpenSSH 6.7ãå®è¡ããŠããŸãïŒïŒã«å¯ŸããŠå®è¡ãããšã ssh localhost whoami
ãå®è¡ãããšDEBUG3ã¬ãã«ã®ãã°ã«ããã衚瀺ãããŸãã
debug1: server_input_channel_req: channel 0 request exec reply 1
debug1: session_by_channel: session 0 channel 0
debug1: session_input_channel_req: session 0 req exec
Starting session: command for root from 172.17.0.1 port 42598
fab -H localhost -- whoami
ïŒ
debug1: server_input_channel_req: channel 0 request exec reply 1
debug1: session_by_channel: session 0 channel 0
debug1: session_input_channel_req: session 0 req exec
Starting session: command for root from 172.17.0.1 port 42610
OKã圌ãã¯äž¡æ¹ãšãexec
ãã£ãŠããŸã...ããã¯äºæ³ãããããšã§ãã ããã»ã¹ããªãŒã«äœãéãã¯ãããŸããïŒ ããã¹ãã§ã¯ãããŸããããããŠ...ãããŸããã ã©ã¡ãã次ã®ããã«ãªããŸãã
sshd,1 -D -e
ââsshd,1535
ââpstree,1537 -alpU
ã ãããééããªãã·ã§ã«ã¯æ©èœããŠããŸãããïŒ äœããŠãã®ïŒ &&
ãããªã·ã§ã«ã®ãããªãã®ã䜿çšã§ããŸããïŒ
ã§ããŸãïŒ ããšãã°ã whoami && id
ã¯æ£åžžã«æ©èœããŸãã ã€ãŸããUnixããã»ã¹å¶åŸ¡ã«ã€ããŠã®ç§ã®ç解ãèãããšãããã¯å°ãå¥åŠã§ãã sshdãæåéãexec(string)
å®è¡ããŠããå¯èœæ§ã¯äœãããã§ãããã·ã§ã«ã䜿çšããŠè§£éããŠããå Žåã¯ã pstree
ãŸãããïŒ
opensh-portableãå®éã«æãäžããŠãäœãäœã§ãããã確èªããæãæ¥ããšæããŸãã
session_input_channel_req
ãã°è¡ãïŒãæ³åã®ãšããïŒ exec
ããã¯session_exec_reqãæå³ããŸãdo_exec_pty
ãŸãã¯ïŒãã®å ŽåãptyãèŠæ±ããªãã£ãããããã°è¡ã«ttyçªå·ãå°ããªãããããããŸãïŒã®ããããã«ãªããŸãã do_exec_no_ptyãŸãã2016幎12æã®ããã«ãéå»ã«ãã®ãã¬ãŒã¹ã®äžéšãå®è¡ããŸããïŒãã ããçç±ãçŠç¹ãç°ãªããŸãïŒïŒ https ïŒ//github.com/paramiko/paramiko/pull/398#issuecomment-264281759ã å®å šã«å¿ããŠãã...
pstree
ã·ã§ã«ã衚瀺ãããªãçç±ã¯ãåãçæãã代ããã«èŠªããã»ã¹ã眮ãæããexecve
ã䜿çšããŠããããã§ãã ç¥ã£ãŠãããšè¯ãã ïŒç·šéïŒééã£ãŠãã¡ããã©ã·ã§ã«ãšã®sshdåPROCã«åã£ãŠä»£ããããšããã·ã§ã«èªäœã¯ãã®åŸã眮ãæãã-ç§ã«ã¹ã¿ã€ã«ã®execåŒã³åºããè¡ãããšãã§ããã³ã¡ã³ãã¯äžèšãåç
§ããŠãã ãããïŒ
ãšã«ããããïŒ ããã¯ãFabricãšOpenSSHã®ã¯ã©ã€ã¢ã³ããã·ã§ã«ã®å®è¡ã«é¢ããŠãŸã£ããåãããšãããŠããããšãæå³ããã¯ãã§ãã ãããã®ã©ã¡ãããOpenSSHã®ã³ãŒãããŒã¹ã®ãããã®éšåãå€æŽããããšã¯ãããŸããã ããã¯ãã€ãã®ãããªãã®ã§ãªããã°ãªããŸããbash -c "python3 ./configure.py"
ã®å®éã®å€ãšã bash
@ã³ãŒãããªãŒã®MacOSã®ã¬ãã«ã®ãŠãŒã¶ãŒãšãã®æ§æãããã·ã§ã«ã«ãã£ãŠç°ãªããŸãã
env varäŒéãå·®å¥åèŠå ã§ãããšããç§ã®äºæãæ£ç¢ºã§ãããã©ããçåã«æããŸããããã¯ã2ã€ã®å®è¡ç°å¢ãã©ã®ããã«ç°ãªãããšããããšã«ã€ããŠç§ãèããããšãã§ããä»ã®å¯äžã®ããšã ããã§ãã ç§ã®CLIã«çŠç¹ãåœãŠããã¹ãã®FWIWã§ã¯ã env
ã¯äž¡æ¹ã®ã·ã¹ãã ã§åãããšãå ±åããä»ã®ç°å¢é¢é£ã®åé¡ã«é¢ä¿ãªããïŒSSHã»ãã¥ãªãã£ããªã·ãŒã«ããïŒ_default_ã®åäœã¯åžžã«ããŒã«ã«ç°å¢ãããªãŒã¯ãããªãããšã§ããå察åŽã
ãããç§ã¯sshdãåžžã«ãŠãŒã¶ãŒã®ã·ã§ã«ïŒ/ etc / passwdã§æ§æãããŠããïŒã§ã³ãã³ãæååãå®è¡ãããšç¢ºä¿¡ããŠããŸãã ãã ããã³ãã³ãæååã解æããŠåäžã®ã³ãã³ãã§ãããšå€æã§ããå Žåã¯ãã³ãã³ãæååã®åã«ãexecããä»ããŸãã
$ ssh testdeploy02.ec2.st-av.net pstree -a
...
|-sshd -D
| `-sshd
| `-sshd
| `-pstree -a
$ ssh testdeploy02.ec2.st-av.net 'pstree -a && sleep 1'
...
|-sshd -D
| `-sshd
| `-sshd
| `-bash -c pstree -a && sleep 1
| `-pstree -a
$ ssh testdeploy02.ec2.st-av.net 'VAR=-a sh -c "exec pstree \$VAR"'
...
|-sshd -D
| `-sshd
| `-sshd
| `-pstree -a
ç°å¢å€æ°ã«é¢ããŠã¯ããããã¯äž»ã«sshã¯ã©ã€ã¢ã³ããšsshdãµãŒããŒã®æ§æã«ãã£ãŠå¶åŸ¡ãããŸãã
$ grep Env /etc/ssh/*_config
/etc/ssh/ssh_config: SendEnv LANG LC_*
/etc/ssh/sshd_config:AcceptEnv LANG LC_*
ãããã£ãŠãsshã¯ã©ã€ã¢ã³ãã¯ïŒã³ãã³ãæååèªäœã®å€éšã§ïŒããã€ãã®å€æ°ãæ瀺çã«éä¿¡ãããããã¯sshdã«ãã£ãŠãã£ã«ã¿ãªã³ã°ãããŸãã ããããæããã«ããã€ãã®äŸå€ããããŸãã
$ ssh testdeploy02.ec2.st-av.net env | grep TERM
$ ssh -t testdeploy02.ec2.st-av.net env | grep TERM
TERM=xterm-256color
å®éããã·ã§ã«ãåäžã®ã³ãã³ãã«çœ®ãæããèªåå®è¡ãåäœã¯ãbashã®æ©èœã ãšæããŸãã
$ dash -c "pstree -a"
...
ââsshd -D
â ââsshd
â ââsshd
â ââbash
â ââdash -c pstree -a
â ââpstree -a
$ bash -c "pstree -a"
ââsshd -D
â ââsshd
â ââsshd
â ââbash
â ââpstree -a
ç·šéïŒå®å šãæãããã«ïŒ
$ bash -c "pstree -a && sleep 1"
ââsshd -D
â ââsshd
â ââsshd
â ââbash
â ââbash -c pstree -a && sleep 1
â ââpstree -a
ãããç§ã¯ééã£ãŠããŸããã execve
ã¯ã sshdã®åprocã眮ãæããããããšãæå³ããŠããã®ã§ããã®åŸã«äœãèµ·ãããã¯ãã·ã§ã«èªäœãš-c xxx
ã«å¯ŸããŠäœããããã«ãã£ãŠæ±ºãŸããŸãã ç§ã®ãã¹ãã¯zshãfwiwã§è¡ãããŸããã
ãŸãã @ ploxiln yeaã¯ãäžèšã§ãªã³ã¯ãããŠããä»ã®ãã±ãããåç §ããŠããŸããã@ code-treeãå®éã«ããããšã¯ç°ãªãçç¶ãçµéšããŠãããã©ããã¯
ç³ãèš³ãããŸããããããã¯èª€å ±ã ãšæããŸãã sshã€ã³ã©ã€ã³ãä»ããŠã³ãã³ããå®è¡ããããšãšãsshãä»ããŠãã°ã€ã³ããåŸã«å®è¡ããããšã®éã«éããããããšã«æ°ã¥ããŠããŸããã§ããã ssh host 'echo $PATH'
ãããšãPATHãæŽæ°ãããŸãããããã°ã€ã³åŸã®echo $PATH
æ£åžžã«æ©èœããŸãã
sshããããè¡ãçç±ã¯ãŸã ããããŸããïŒå®éã«ssh host 'bash -l -c "python3 ./configure.py"'
å®è¡ããå¿
èŠãããããã§ãïŒã ãšã«ãããããã¯çµå±ã®ãšãããã¡ããªãã¯ã®åé¡ã§ã¯ãªããšèšã£ãŠãéèšã§ã¯ãããŸããã æ··ä¹±ãããŠç³ãèš³ãããŸããã
@ code-treeããã¯ãåè¿°ã®å 容ã«é¢é£ããŠããŸã-ã·ã§ã«ã«ã¯ãåäœããããã€ãã®ç°ãªãã¢ãŒãããããããã°ã€ã³ãããã³ãã€ã³ã¿ã©ã¯ãã£ãããšåŒã°ããããšããããããŸãïŒéåžžããããã¯ã©ã¡ããšãèŠãªãããªãåºæ¬ã¢ãŒãã®äžã«ãããŸãïŒãã·ã§ã«ãå®è¡ãããŠãããšãã«ãããŒãããrcãã¡ã€ã«ã®ã»ãããå€æŽãããŸãã
ããã§ã®éèŠãªç¹ã¯ã bash -c xxx
ã¯ãã€ã³ã¿ã©ã¯ãã£ãããšã¯èŠãªãããªãããã .bash_profile
ãªã©ã®ç¹å®ã®ãã¡ã€ã«ã®èªã¿èŸŒã¿ãã¹ãããããŸããã -c
ãªãã§bash
ãå®è¡ããã ãã§ããéåžžã¯ã€ã³ã¿ã©ã¯ãã£ãã§ããããã¡ã€ã«ãã¡ã€ã«ãããŒãããŸãã
äžã§èŠãããã«-sshdã¯ãåäžã®ã³ãã³ããå®è¡ããããã«èŠæ±ãããšïŒFabricãå®è¡ããããã«ããŸãã¯ssh host command
ãå®è¡ããããã«ïŒãåžžã«bash -c <command send down the pipe>
ãå®è¡ãããããåžžã«é察話ã¢ãŒãã«ãªããŸãã ïŒFabric 1ãè¡ãããšãå®è¡ãã -l
ãŠç¬èªã®ãã¹ããããã·ã§ã«ãå®è¡ããªãéã...ãããã bash -c "bash -l -c \"oh god escaping is hard help\""
ãå®è¡ããŠããã®ã§ãããããããã€ãð¥ãå®è¡ããŸãã
ãšã«ããããã¹ãŠã倱ãããããã§ã¯ãããŸãããæ°å¹Žããšã«ãã®éšåã®èšæ¶ãæŽæ°ããå¿ èŠãããããã§ããããã§ãã...ä»ã¯æŽæ°ãããŠããŸãð
ããã¯bashã®ãã®ã§ãããfabã®ãã®ã§ã¯ãããŸããã
bashãèµ·åæã«ãœãŒã¹ããããšã決å®ãããã¡ã€ã«ã¯è€éã«ãªãå¯èœæ§ããããŸãhttp://blog.flowblok.id.au/2013-02/shell-startup-scripts.htmlããã³debian / ubuntuïŒããã³ã»ãšãã©ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ïŒã¯
/etc/profile
ã§ããã€ãã®ã«ã¹ã¿ãã€ãºããã~/.bashrc
ãããã©ã«ãã®ã·ã§ã«ãã¡ãã䜿çšããã®ã¯
/bin/bash -l -c
ã§ã-l
ã¯ãããããã°ã€ã³ãã·ã§ã«ã«ããŸãã debian / ubuntuã®ã«ã¹ã¿ãã€ãºããªããšãbashã®ããã°ã€ã³ãã·ã§ã«ã~/.bash_profile
ãã~/.bashrc
ã¯ã§ããŸãããããããubuntu 16.04ã§ã¯ããã°ã€ã³ã·ã§ã«ã®å Žåã§ãããã©ã«ãã§
.bashrc
ããŠããããã§ãã ãã ããããã©ã«ãã®.bashrc
ã®äžéšã«è¿œå ãããè¡ã¯ãé察話çã«å®è¡ãããŠããããšãæ€åºãããšäžéšè¿ãã§ãã€ã«ã¢ãŠããããããåŠçãããŸãããããã§ã¯ãubuntu-16.04ã®ããã©ã«ããŠãŒã¶ãŒ
.bashrc
2è¡ãè¿œå ããŸãã# ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples export VAR1=val1 # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac export VAR2=val2 # don't put duplicate lines or lines starting with space in the history. # See bash(1) for more options HISTCONTROL=ignoreboth ...
ãããç§ããã¹ãããŠããfabfileã§ãïŒ
from fabric.api import run, env, task <strong i="24">@task</strong> def get_myvars(): run("echo VAR1=$VAR1 VAR2=$VAR2")
çµæïŒ
$ fab -H testpy05.ec2.st-av.net get_myvars [testpy05.ec2.st-av.net] Executing task 'get_myvars' [testpy05.ec2.st-av.net] run: echo VAR1=$VAR1 VAR2=$VAR2 [testpy05.ec2.st-av.net] out: VAR1=val1 VAR2= [testpy05.ec2.st-av.net] out: ...
ããªãã¯ç§ã®åœãæããŸããã ããã¯ç§ãèŠã€ããå®ç§ãªçãã§ã:)ã©ããããããšãïŒ
æãåèã«ãªãã³ã¡ã³ã
ããã¯bashã®ãã®ã§ãããfabã®ãã®ã§ã¯ãããŸããã
bashãèµ·åæã«ãœãŒã¹ããããšã決å®ãããã¡ã€ã«ã¯è€éã«ãªãå¯èœæ§ããããŸãhttp://blog.flowblok.id.au/2013-02/shell-startup-scripts.htmlããã³debian / ubuntuïŒããã³ã»ãšãã©ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ïŒã¯
/etc/profile
ã§ããã€ãã®ã«ã¹ã¿ãã€ãºããã~/.bashrc
ãããã©ã«ãã®ã·ã§ã«ãã¡ãã䜿çšããã®ã¯
/bin/bash -l -c
ã§ã-l
ã¯ãããããã°ã€ã³ãã·ã§ã«ã«ããŸãã debian / ubuntuã®ã«ã¹ã¿ãã€ãºããªããšãbashã®ããã°ã€ã³ãã·ã§ã«ã~/.bash_profile
ãã~/.bashrc
ã¯ã§ããŸãããããããubuntu 16.04ã§ã¯ããã°ã€ã³ã·ã§ã«ã®å Žåã§ãããã©ã«ãã§
.bashrc
ããŠããããã§ãã ãã ããããã©ã«ãã®.bashrc
ã®äžéšã«è¿œå ãããè¡ã¯ãé察話çã«å®è¡ãããŠããããšãæ€åºãããšäžéšè¿ãã§ãã€ã«ã¢ãŠããããããåŠçãããŸãããããã§ã¯ãubuntu-16.04ã®ããã©ã«ããŠãŒã¶ãŒ
.bashrc
2è¡ãè¿œå ããŸãããããç§ããã¹ãããŠããfabfileã§ãïŒ
çµæïŒ