2009-10-30 250 views
2

我的目標是: 我有一臺Windows XP個人電腦,其中包含所有源代碼和開發數據庫。 我們稱之爲「pc.dev.XP」。 我有一臺運行Linux的目標計算機。我們稱之爲「pc.demo.Linux」。 這裏就是我的「pc.dev.XP」完成(只是讓你獲得上下文):Php:從Windows運行ssh登錄到Linux並運行腳本

  • 安裝的所有cygwin的東西
  • 創建一個有效的RSA密鑰,並把它放在DEST 備份計算機,以便SSH不 詢問密碼
  • rsync的工作得很好,這種方式

如果我試圖通過命令行來做到這一點的「pc.dev.XP」:

cd \cygwin\bin 
ssh [email protected] "cd /var/www && ls -al" 

這工作完全沒有問密碼 現在,這裏就是我想要做的「pc.dev.XP」:

  • 推出PHP腳本,提取開發。數據庫爲SQL文件
  • 壓縮這個文件
  • 通過ftp把它轉移到了「pc.demo.Linux」
  • 日誌以「pc.demo.Linux」和執行「解壓那麼MySQL -e」源解壓文件」

,如果我上運行 「pc.dev.XP」 手動:

putty -load "myconf" -l Fred -pw XXX -m script.file.that.unzip.and.integrates.sql 

這工作完全 同樣爲:

cd \cygwin\bin 
ssh [email protected] "cd /var/www && ls -al" 

如果我嘗試exec()在php(wamp安裝在「pc.dev.XP」)這些腳本掛起。我很確定這是因爲用戶是「SYSTEM」而不是「Fred」,並且putty或ssh要求輸入密碼,但也許我錯了。

無論如何,我正在尋找一種方法來自動完成我描述的這4個任務,並且因爲exec()掛起而卡住了。 safe_exec_mode或safe_exec_dir指令沒有問題,它們在開發機器上被禁用,因此如果我嘗試一些基本的東西,如exec(「dir」),exec()工作得非常好。

任何想法我可以做/檢查/正確嗎?

+0

爲什麼不使用批處理文件呢?更無憂無慮,不需要PHP。 – 2009-10-30 12:42:10

回答

0

這裏就是我所做的: 的批處理文件:

  1. 通過 「php.exe的my_extract_then_compress_then_ftp.php」
  2. 稱爲rsync到源文件夾同步調用PHP文件
  3. 打電話putty -l用戶-pw密碼-m file_with_ssh_commands_to_execute

它就像一個魅力。

0

你想從Apache下運行PHP,如我去http://myWebserver.com/crazyScript.php,這一切發生?或者你只是想在PHP中編寫腳本並通過cmd行調用它們?

如果您想要第一個解決方案,請嘗試在具有憑據的其他用戶下運行您的apache/iss以執行所有這些任務。

「如果我手動運行在開發PC上,這個功能完美無缺。」 爲什麼不這樣做呢?當您運行該腳本時,我假設您正在連接到開發機器上的本地SSH服務器。當你這樣做時,你使用的是憑據Fred,所以一切正常。當你運行PHP腳本時,你是對的,它可能是以SYSTEM身份運行的。

嘗試更改apache運行的用戶或使用php連接到本地ssh,從而使用備用憑據。

+0

我想「去http://myWebserver.com/crazyScript.php」,所有這一切發生......但你讓我想......創建一個批處理CMD/DOS文件,將稱爲「php.exe myscript。 php「然後調用」ssh.exe [有很好的參數]「 」使用PHP連接到本地ssh,從而使用替代憑據「這也許是我應該做的......但從技術上講,怎麼樣? – 2009-10-30 13:51:21

1

我不知道這是否是你所需要的,但我通常使用這樣的結構在計算機之間同步數據庫:

php extractFromDb.php | ssh [email protected] "mysql remoteDatabaseName" 

這本地執行PHP腳本,並管道SQL命令腳本通過SSH straigt打印出遠程數據庫中執行它們的遠程mysql進程。

如果你需要壓縮,您可以使用SSH的-C開關,或集成像這樣使用你選擇的壓縮方案:

php extractFromDb.php | gzip -9 | ssh [email protected] "gunzip | mysql remoteDatabaseName" 
+0

這似乎是一個非常好的主意,我會在星期一檢查一下,謝謝 – 2009-10-30 15:51:51