2012-10-31 91 views
2

我想使用批處理文件從Windows機器上的遠程Linux機器上運行自定義命令。自定義命令返回整數值,這將被批處理文件進一步使用。我怎樣才能做到這一點?使用批處理文件在Windows機器上運行遠程Linux機器上的自定義命令

現在,我從批處理文件調用winscp和命令從winscp輸出遠程寫入到文件,然後使用winscpget命令,我下載該文件到我的Windows機器。之後,我正在從批處理文件中讀取該文件。好吧,但很長的過程。

我的目標是讓命令的輸出可用於批處理腳本,以便可以在批處理文件中進一步使用該值。

+0

爲什麼關閉票? –

+0

因爲你的問題不屬於這裏,而是屬於serverfault。如果關閉將獲得足夠的選票,您的問題將從此處移至serverfault,而不僅僅是關閉。 ;) – brimborium

回答

3

另一種選擇是plink.exe。這是PuTTy一個命令行版本,如果你已經安裝了膩子,那麼你已經有了砰砰(在同一目錄膩子)

從批處理,這將是這個樣子:

%PATH_TO_FILE%\plink.exe -batch [email protected] "remote command" 
SET RETVAL=%ERRORLEVEL% 
IF NOT ["%RETVAL"]==["0"] (
    ECHO "Remote Command failed" 
) ELSE (
    ECHO "Command returned with exit code %RETVAL% 
) 
+0

聽起來很酷.....是啊..膩子安裝在我的機器上... –

+0

斯拉夫:我使用'%PATHTOPUTTY%plink.exe [email protected] -pw測試@ 123 -m commands.txt ECHO這是%ERRORLEVEL%' 在控制檯中,我得到這是0,這是不正確的。我只是想將plink.exe的返回值賦給某個​​變量,以便我可以進一步使用它。 –

+0

這是_is_最後一個linux命令的返回值。如果您在最後一條linux命令之後輸入'echo $?',則相同。也許你要求的不是返回碼(錯誤碼,退出碼),但是你想要命令的實際輸出嗎?在這種情況下,您必須將其重定向到Windows框中的文件。 'whole_plink_command_ending_in_-m_commands.txt> outFile.txt'。然後將該文件讀入一個變量:SET/P值<= outFile.txt。你現在可以使用'%Value%'。有一種方法可以在不使用「for/f」語法創建臨時文件的情況下完成,但是您會失去對錯誤處理的一定控制。 – Slav

1

您可以使用ssh在Linux機器上運行遠程命令。您可以從http://sshwindows.sourceforge.net/

然後得到的OpenSSH的命令行窗口端口,在您的批處理文件,只需添加:

ssh linuxserver command-name 

這將返回命令名的輸出

例如:

ssh linuxserver uname 

輸出: 「Linux的」

希望這HEL PS。

+0

從未在Windows上嘗試'ssh'。這是相當有趣的,如果工程.. –

相關問題