2012-05-12 58 views
1

所以我爲我的工作做了一個開發項目,基本上我們的想法是我們有一個Excel VBA宏,需要對文件進行一些解析,創建一個新文件並將文件位置發送到運行在大型機上的Unix腳本。Unix/Windows腳本幫助:將命令行參數從Windows傳遞到Unix

每次運行宏時文件的位置都不一樣,感謝Samba,我可以在Windows中創建該文件,並且可以立即訪問Unix系統。

現在問題出現了:如何傳遞文件的位置。這個問題是一個名爲plink的程序(這是一個允許配置文件與程序本身而不是PC註冊表一起使用的putty版本)是唯一被批准的選項來完成這項工作(我知道Cgywin會很輕易地做到這一點) )並且該程序位於具有多個人的網絡驅動器上可能需要同時運行它。 authorized_keys文件有一個exec指向需要運行的Unix腳本,出於安全原因,我無法改變它。不過,我可以在Unix中編寫一個腳本來獲取未命名參數,並使用它來運行僅將參數(文件位置)作爲命名參數(--file =/directory/datafile)的腳本。

我試圖運行該腳本(在cmd中)plink.exe serverIP/directory/datafile(登錄已配置),但顯然參數無法以這種方式傳遞。

我也試過plink.exe serverIP「/ directory/datafile」,這裏也沒有運氣。

我只是想知道是否有一個簡短而整潔的方式來完成這件事。我們有一個具有類似配置的示例項目,但是執行此操作的腳本採用了10000行,我不想閱讀,我認爲這應該以10行或20行的簡短腳本形式完成。如果需要,我可以自由創建任何Windows腳本,前提是我可以同時運行具有不同參數的程序的多個會話。

+1

太多細節在這裏分析,可以簡化您的問題1句「爲自動連接使用的Plink」?祝你好運。 – shellter

+2

@shellter:我需要使用plink發送一個參數來運行一個Unix命令,並想知道我該怎麼做。謝謝! – AZhu

回答

3

您應該可以使用plink在Unix機器上運行命令,就像在另一臺使用ssh的UNIX計算機上運行一個unix命令一樣。例如

plink [email protected] "ls" 

將在host

同樣運行ls

plink [email protected] "/absolute/path/to/script/on/unix/machine/script.sh" 

應該host運行script.sh。您可以在本地構建要在unix計算機上運行的命令(包括腳本的任何參數,如數據文件的路徑名),然後使用plink運行命令,如上所述。

如果script.sh有參數,而且他們沒有得到閱讀,嘗試把兩個腳本名稱並在單引號中的參數:

plink [email protected] "'/absolute/path/to/script/on/unix/machine/script.sh arg1 arg2'" 

你可能想看看進入砰砰的文件,它可以在這裏找到:http://the.earth.li/~sgtatham/putty/0.62/puttydoc.txt

看特別是在第7.2.2節 -

+0

我可以運行。sh本身,沒問題,當我嘗試運行一個參數並且ssh鍵已經配置爲運行這個程序時,問題出現了,所以如果我做了plink user @ host「parameters」,那麼參數將不會被讀入。 – AZhu

+1

相應地編輯了我的答案。請注意,它可能有助於通過ssh從一個unix框運行腳本到另一個腳本......這將允許您查看需要通過ssh傳遞的內容以及目標系統如何解釋該腳本......然後您可以調整參數據此點亮。引用約定在Windows和Unix之間有很大的不同,所以在破解'如何在Windows端對其進行格式化'之前,明確知道通過ssh傳遞了什麼是有幫助的。 –

相關問題