我的問題: 我在服務器A上有一個bash腳本,而在另一個服務器上有一個php腳本,服務器B上。服務器A上的shell腳本用於運行php腳本其他服務器,但前幾天有人將錯誤的rm -rf
命令放在錯誤的目錄中並將其刪除。我有這個shell腳本的舊備份,但在第二個服務器上調用php腳本的代碼缺失。這幾條線(事實上,如果我記得很清楚的話)是幾年前由另一個人寫的,他們不再和我們一起工作,我也無法聯繫到她。我不是一個PHP人,並且對這種語言來說是相當新的,在過去兩天在網絡上搜索了一些提示後,我決定在這裏發帖。使用curl執行php文件
我登錄在服務器A上,作爲可以運行shell腳本的用戶。 我有另外幾個用來登錄服務器B的用戶名/密碼。這個用戶可以運行php腳本。下面是這個PHP腳本:
<?php
/*
php -f invoke_manage_auto_requests_files.php "create|delete|upload" "vide|pre|res|obs" "nrcc|cgcm|arpege|crcm|rc|sta|md|mds" id "processing|nom du fichier"
eg . php -f invoke_manage_auto_requests_files.php create pre nrcc 15678 processing
*/
if($argv[1] == "upload") {
$argv[5] = '@' . realpath($argv[5]);
}
$post_fields = array('ACTION' => $argv[1] , 'PREFIX' => $argv[2] , 'REQ_TYPE' => $argv[3] , 'ID' => $argv[4] , 'FILE_CONTENT' => "$argv[5]");
$post_fields['VALIDATE'] = md5("This is legit");
$url = "http://serverB/scripts/manage_auto_requests_files.php";
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $post_fields);
curl_exec($ch);
curl_close($ch);
?>
我正在尋找打電話的方式: php -f invoke_manage_auto_requests_files.php create pre nrcc 15678 processing
(例如) 但是從bash腳本。我只知道這似乎是一個捲曲的電話,但我不確定。
這裏是我的服務器的規格:
服務器A:PHP Version 4.4.4-8+etch6
系統的Linux 2.6.26 HAWA-bpo.2-686-bigmem#1 SMP週五7月3日21時38分05秒UTC 2009年的i686
服務器B:PHP Version 4.3.9
系統的Linux verglas 2.6.9-34.ELsmp#1 SMP週五2月24日16時54分53秒美國東部時間2006年i686的
感謝您的閱讀,或幫助。
我同意CLI評論,但爲什麼使用bash?我認爲對於一個PHP開發人員來說,PHP不是一個障礙,而不是bash。 –
,因爲php可能沒有安裝在serverA上?無論如何,bash是一個需求,看到這個問題。另外,運行外部程序如ssh時,bash是合適的。 – greg0ire
爲什麼使用bash:bash腳本是由cronjob運行並執行大量任務。 .sh文件有3500多行,功能強大(即使鏈接丟失),主管不需要/不需要更新它。我忘了提及服務器A是由一家政府機構擁有的私人公司,服務器B.這就是爲什麼我不允許使用ssh-keygen/ssh-copy-id連接它們......我會聯繫寫這個鏈接的人,當我拿到它的時候我會把答案放在這裏。謝謝。 – kevindelorme