Unix / Windows脚本帮助:将命令行参数从Windows传递给Unix

时间:2012-05-12 13:25:46

标签: windows unix scripting putty plink

所以我正在为我的工作做一个开发项目,基本上我的想法是我们有一个Excel VBA宏需要对文件进行一些解析,创建一个新文件并将文件位置发送到运行在主机上。

每次运行宏时文件的位置都不同,感谢Samba,我可以在Windows中创建文件,Unix系统可以立即访问它。

现在问题出现了:我怎样才能传入文件的位置。问题是一个名为plink的程序(这是一个putty版本,它允许配置文件与程序本身并行,而不是在PC的注册表中)是唯一被批准的选项来完成这项工作(我知道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 个答案:

答案 0 :(得分:3)

您应该能够使用plink在Unix机器上运行命令,就像在另一台使用ssh的unix机器上运行一个unix命令一样。例如

plink user@host "ls"

将在ls

上运行host

同样地:

plink user@host "/absolute/path/to/script/on/unix/machine/script.sh"

应在script.sh上运行host。您可以在本地构建要在unix机器上运行的命令(包括脚本的任何参数,如数据文件的路径名),然后使用plink运行命令,如上所述。

如果script.sh有参数,而且它们没有被读入,请尝试将脚本名称和参数都放在单引号中:

plink user@host "'/absolute/path/to/script/on/unix/machine/script.sh arg1 arg2'"

您可以查看plink文档,可在此处找到:http://the.earth.li/~sgtatham/putty/0.62/puttydoc.txt

特别注意第7.2.2节 - “使用Plink进行自动连接”