2014-12-03 39 views
0

我有一個在unix機器上運行的perl腳本(Linux01)並執行各種操作。我想添加一些東西到腳本中,允許我在我的網絡上有權限訪問的Windows計算機(Wdinows01)上運行系統命令。Perl腳本,在unix上執行時查看windows文件夾

我想要做這樣的事情:

my $result = `cat \\Windows01\tmp\test\fileinfo.txt`; 

顯然上面的代碼是缺少了很多,但,這是不可能的,或者這是更復雜的話,我認爲?

+1

您呈現的是不是一個令人信服的理由去一個遠程系統上執行命令的麻煩的例子。爲什麼不直接與你的Linux系統共享Windows驅動器,安裝驅動器,並從你的Linux系統中解決它?然後你在遠程文件系統上本地運行'cat'命令。 – DavidO 2014-12-03 19:15:36

+0

機器會定期更換,並且無法進行硬編碼。此外,我的腳本的其中一個限制是我不能以任何方式混淆系統(如安裝驅動器) – 2014-12-03 19:18:10

+1

在遠程系統*上運行命令*會與其混淆。在任意遠程系統上運行命令是整個計算機安全領域努力限制的事情之一。 – DavidO 2014-12-03 19:21:16

回答

2

反引號遵循相同的編碼規則爲雙引號字符串,這意味着

`...` 

是一回事

readpipe(qq`...`) 

讓我們看看你傳遞給外殼的字符串:

$ perl -E'say qq`cat \\Windows01\tmp\test\fileinfo.txt`' 
cat \Windows01 mp  est 
ileinfo.txt 

哎呀! \\產生一個反斜槓,\t產生一個標籤,\f產生一個換頁。修正:

my $result = `cat \\\\Windows01\\tmp\\test\\fileinfo.txt`; 

(這是假設你cat需要的Windows路徑。)

+0

或'my $ result = qx'cat \\\\ Windows01 \ tmp \ test \ fileinfo.txt'' – Borodin 2014-12-03 22:30:30

+0

您*有*可以轉義多個反斜槓,因爲我相信您知道 – Borodin 2014-12-03 22:32:08

+0

我認爲這就是* multiple *意思是 – Borodin 2014-12-03 22:33:18

相關問題