我正在通过ansible-playbook自动安装鼠尾草.在那里我需要运行两个shell脚本.
以下是第一个shell脚本的外观:
#!/bin/bash
# Creating Sage notebook
dir="/root/.sage/sage_notebook.sagenb"
screen -S "Sage_Server" sage -c 'notebook(interface="", directory=$dir, port=80, accounts=true)'
这是第二个shell脚本的代码:
#!/bin/bash
# Creating Sage inotebook
address=$(hostname --ip-address)
sage -c "inotebook(interface=" "'$address'" ",port=80,accounts=true)"
这就是剧本的样子:
---
- hosts: localhost
remote_user: root
tasks:
- name : update system
apt : update_cache=yes
- name : install m4
apt : name=m4 state=present
- name : install build-essential
apt : name=build-essential state=present
- name : install gcc
apt : name=gcc state=present
- name : install gfortran
apt : name=gfortran state=present
- name : install libssl-dev
apt : name=libssl-dev state=present
- name : install python-software-properties
apt : name=python-software-properties state=present
- name : add sage ppa repo
apt_repository: repo='ppa:aims/sagemath'
- name : update system
apt : update_cache=yes
- name : install dvipng
apt : name=dvipng state=present
- name : install sage binary
apt : name=sagemath-upstream-binary state=present
- name : invoke create_sagenb script
command: /usr/bin/screen -d -m sudo /root/databases-and-datamining-iiith/python-scripts/create_sagenb -i -y
- name : invoke start_sage script
command: /usr/bin/screen -d -m sudo /root/databases-and-datamining-iiith/python-scripts/start_sage -i -y
现在,当我运行第一个脚本时,它会要求输入一个新的sage密码.但是我无法从剧本中传递密码.
如果我这样做的话
ps -ef | grep sh
我可以看到脚本正在运行但是sage服务没有运行.
它需要密码才能启动服务.
有谁能告诉我如何通过命令提供密码作为shell脚本的参数.
解决方法:
根据经验,您不应该在ansible playbooks中运行需要用户输入的脚本.
你可以试着用类似的东西
echo "password" | script.sh
要么
在/ etc中创建一个包含密码的sage-password文件,并且:
script.sh < /etc/sage-password
但这只有在从stdin读取时才会起作用 – 大多数应用程序直接从终端设备驱动程序读取密码(即/ dev / ttyS#),在这种情况下,这个技巧将不起作用.
如果是这种情况,请查看sage文档,他们应该有一个更强大的非交互式启动方式.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。