2012-05-12 57 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传递了什么是有帮助的。 –

相关问题