我想从 php 页面执行一个 shell 脚本,它将执行一个 MySQL 命令。
为此,我按照此处显示的方式进行操作:https : //stackoverflow.com/a/8055745/2117868
这是我的 sqlscript.sh
#!/bin/sh
sudo wget -t 50 -O /tmp/update.sql http://example.com/update.sql
if [ $? -eq 0 ]; then
mysql -h "localhost" -u "root" "-pXXXXXXXX" "database-name" < "/tmp/update.sql"
if [ $? -eq 0 ]; then
sudo rm /tmp/update.sql
echo "200"
else
echo "502"
fi
else
echo "404"
fi
Run Code Online (Sandbox Code Playgroud)
我的 php 页面是 runscript.php
<?php
shell_exec("sudo /path/to/script/sqlscript.sh");
?>
Run Code Online (Sandbox Code Playgroud)
现在,当我sqlscript.sh从服务器控制台或php 页面 调用runscript.php它时,它可以正常工作200并按预期返回。
但是当我输入 MYSQL 用户和密码时 …
我正在尝试从 Ansible playbook更改非 root Linux 用户的密码。为此,我尝试按照此链接进行操作
按照说明,我可以通过在终端中输入以下代码成功更改非 root 用户的密码。
$ echo -e "your_current_pass\nlinuxpassword\nlinuxpassword" | passwd
Changing password for testuser.
(current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Run Code Online (Sandbox Code Playgroud)
之后,我尝试使用如下所示的 Ansible playbook 自动化代码,
---
- hosts: all
gather_facts: no
tasks:
- name: "Check if user exists"
register: user1_exists
raw: getent passwd {{ ansible_user }}
ignore_errors: true
- name: "Change {{ ansible_user }} password"
raw: echo -e "my_current_pass\nmy_new_pass\nmy_new_pass" | passwd
when: user1_exists|success
Run Code Online (Sandbox Code Playgroud)
我在这里使用Ansible的原始模块 …