2017-04-18 50 views
1

我想用php執行我的腳本bash。我的腳本將我登錄到我的服務器,然後創建我的帳戶。如何執行一個bash腳本,使用ssh和php

SCRIPT="useradd martinouh --home /home/martinouh --create-home; echo martinouh:$pass | chpasswd; usermod -s /bin/bash martinouh; usermod -aG sudo martinouh; usermod -aG docker martinouh;" 

sshpass -p $pass ssh -o StrictHostKeyChecking=no [email protected]$ip "${SCRIPT}" 

sshpass -p $pass ssh-copy-id -i /home/Martinouh/.ssh/id_rsa.pub [email protected]$ip 

但是當我通過shell_exec();運行它確實執行腳本,但不與sshpass的部分。

我該怎麼做才能執行它?

此刻,只是爲了測試shell_exec();

Failed to change pseudo terminal's permission: Permission denied 
Failed to change pseudo terminal's permission: Permission denied 
Failed to change pseudo terminal's permission: Permission denied 
Failed to change pseudo terminal's permission: Permission denied 

也許它在SELinux和Apache許可的事:我調用本地主機/ script.php的,包含以下

<?php 
    $output = shell_exec('bash select.sh'); 
    echo $output; 
?> 

我會在error_log獲得這個執行我的腳本?

+0

當手動執行bash腳本時是否按預期工作? –

+0

是的,它運行正常,當我手動運行它。 – Martinouh

+0

你能提供更多關於你如何使用php執行的細節? –

回答

0

現在好了,我已經禁用了SELinux,它執行該日誌然後添加一個用戶的部分...

但它不會做

sshpass -p $pass ssh-copy-id -i /home/Martinouh/.ssh/id_rsa.pub [email protected]$ip 

我得到這個在我的網頁

/usr/bin/ssh-copy-id: ERROR: failed to open ID file '/home/Martinouh/.ssh/id_rsa.pub': Permission denied 

於是,我就動鑰匙,chown -R apache:apache就可以了,我得到了這個在我的網頁:

/usr/bin/ssh-copy-id: ERROR: failed to open ID file './id_rsa': No such file or directory (to install the contents of 'id_rsa.pub' anyway, look at the -f option) 

我試圖與-f但它不會改變

/usr/bin/ssh-copy-id: ERROR: failed to open ID file '/.pub': No such file or directory 

編輯:

它現在SELinux的工作殘疾人和糾正的ssh-copy-id命令,我有將id_rsa.pub和id_rsa複製到一個目錄,並將它們都複製到這兩個目錄中。私鑰是需要的,否則我coudn't複製我的id_rsa.pub到服務器(甚至使用-f標誌)。

現在我應該怎麼解決這個,我們知道是什麼讓它工作(即使壽是不正確的方法是什麼?)

  • 給阿帕奇訪問的〜/ .ssh右/? (用於ssh-copy-id)

  • 給apache執行script/shell的權利嗎? (SELinux)

0

由於錯誤消息引用僞終端,請嘗試使用-T禁用此功能。大多數需要僞終端功能的功能都是交互式的,無論如何都不適用於這種情況。