[英]Fabric runs bash script that ask for sudo password - How to send this password
我想使用結構在遠程計算機上部署一些應用程序。 為此,我使用Fabric從VCS(bitbucket或github)中檢索bash腳本並執行它。 但是,腳本的第一步是將當前用戶添加到sudoers中,因此要求輸入密碼。
可以在fabfile或fab命令中發送此密碼嗎?
部分代碼:
重擊
sudo tee /etc/sudoers.d/$USER <<END
END
file=/usr/share/MyCompagny/mybashscript.sh
sudo touch $file
sudo echo 'blablabla' >> $file
sudo /bin/rm /etc/sudoers.d/$USER
sudo -k
fabfile
def deploy():
env.hosts = ['192.168.100.160']
source_folder = '/home/username/src'
branch = 'dev'
puts('Pulling changes from branch <{}>'.format(branch))
projects = ['data', 'report']
for project in projects:
current_path = os.path.join(source_folder, 'package.{}'.format(project))
with cd(current_path):
puts('Current path: {}'.format(current_path))
# Discard all pending changes
run('git checkout -- .')
# Checkout the right branch
run('git checkout {}'.format(branch))
# Pull changes
run('git pull origin_ssh {}'.format(branch))
puts('Install with bash script')
with cd(source_folder):
run('./mybashscript.sh')
使用結構的“ sudo ”功能代替“ run ”功能。 腳本不會提示輸入密碼,因為它將以sudo特權運行。
def deploy():
env.hosts = ['192.168.100.160']
source_folder = '/home/username/src'
branch = 'dev'
puts('Pulling changes from branch <{}>'.format(branch))
projects = ['data', 'report']
for project in projects:
current_path = os.path.join(source_folder, 'package.{}'.format(project))
with cd(current_path):
puts('Current path: {}'.format(current_path))
# Discard all pending changes
sudo('git checkout -- .')
# Checkout the right branch
sudo('git checkout {}'.format(branch))
# Pull changes
sudo('git pull origin_ssh {}'.format(branch))
puts('Install with bash script')
with cd(source_folder):
sudo('./mybashscript.sh')
希望能幫助到你 !!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.