2014-12-03 74 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

相关问题