Fabric 运行 bash 要求输入 sudo 密码的脚本 - 如何发送此密码
Fabric runs bash script that ask for sudo password - How to send this password
我想使用 fabric 在远程机器上部署一些应用程序。为此,我使用 fabric 从 VCS(bitbucket 或 github)检索 bash 脚本并执行它。但是,我的脚本的第一步是将当前用户添加到 sudoers,所以我需要输入密码。
是否可以在 fab 文件或 fab 命令中发送此密码或...?
部分代码:
bash
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')
使用 fabric 的“sudo”函数代替“运行”函数。脚本不会提示输入密码,因为它将是 运行 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')
希望对您有所帮助!!
我想使用 fabric 在远程机器上部署一些应用程序。为此,我使用 fabric 从 VCS(bitbucket 或 github)检索 bash 脚本并执行它。但是,我的脚本的第一步是将当前用户添加到 sudoers,所以我需要输入密码。
是否可以在 fab 文件或 fab 命令中发送此密码或...?
部分代码:
bash
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')
使用 fabric 的“sudo”函数代替“运行”函数。脚本不会提示输入密码,因为它将是 运行 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')
希望对您有所帮助!!