Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix/Windows脚本帮助:将命令行参数从Windows传递到Unix_Windows_Unix_Scripting_Putty_Plink - Fatal编程技术网

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

Unix/Windows脚本帮助:将命令行参数从Windows传递到Unix,windows,unix,scripting,putty,plink,Windows,Unix,Scripting,Putty,Plink,因此,我在为我的工作做一个开发项目,基本上我们的想法是,我们有一个Excel VBA宏,需要对文件进行一些解析,创建一个新文件,并将文件位置发送到大型机上运行的Unix脚本 每次运行宏时,文件的位置都不同,由于Samba,我可以在Windows中创建文件,Unix系统可以立即访问该文件 现在问题出现了:如何传入文件的位置。问题是,一个名为plink的程序(putty的一个版本,允许配置文件与程序本身并排放置,而不是在PC的注册表中)是唯一被批准的完成这项工作的选项(我知道Cgywin会很容易做到

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

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

现在问题出现了:如何传入文件的位置。问题是,一个名为plink的程序(putty的一个版本,允许配置文件与程序本身并排放置,而不是在PC的注册表中)是唯一被批准的完成这项工作的选项(我知道Cgywin会很容易做到这一点)该程序位于一个网络驱动器上,可能需要多人同时运行。authorized_keys文件有一个exec指向需要运行的Unix脚本,出于安全原因,我无法更改它。但是,我可以在Unix中编写一个脚本,以获取未命名参数,并使用它运行只将参数(文件位置)作为命名参数的脚本(--file=/directory/datafile)

我尝试使用(cmd)plink.exe serverIP/directory/datafile运行该脚本(登录名已配置),但显然无法以这种方式传递参数

我也尝试过plink.exe serverIP“/目录/数据文件”,但也没有运气


我只是想知道是否有一个简短而简洁的方法来完成这件事。我们有一个类似配置的示例项目,但脚本需要10000行,我不想读,我认为应该像一个10或20行的短脚本那样完成。如果需要,我可以自由创建任何Windows脚本,前提是我可以使用不同的参数同时运行程序的多个会话。

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

plink user@host "ls"
将在主机上运行
ls

同样地:

plink user@host "/absolute/path/to/script/on/unix/machine/script.sh"
应该在主机上运行
script.sh
。您可以生成要在unix机器上本地运行的命令(包括脚本的任何参数,如数据文件的路径名),然后使用plink运行该命令,如上所述

如果
script.sh
有参数,但无法读入,请尝试将脚本名称和参数都放在单引号中:

plink user@host "'/absolute/path/to/script/on/unix/machine/script.sh arg1 arg2'"
您可能需要查看plink文档,可以在以下位置找到:


请特别查看第7.2.2节-“使用Plink进行自动连接”

这里有太多的细节无法解析,您能将问题简化为一句话吗?祝你好运。@Sheller:我需要使用plink发送一个参数来运行Unix命令,我想知道如何才能做到这一点。谢谢我可以运行.sh本身,没有问题,当我尝试运行一个参数时,问题出现了,并且ssh密钥已经配置为运行这个程序,所以如果我运行plinkuser@host“参数”,不知怎的,这些参数不会被读入。相应地编辑了我的答案。请注意,通过ssh将脚本从一个unix框运行到另一个unix框可能会有所帮助。。。这将允许您查看需要通过ssh传递的内容以及目标系统如何解释它。。。然后,您可以相应地调整参数,使其符合plink。引用约定在windows和Unix之间有很大的差异,因此在破解“如何在windows端格式化此文件”这一难题之前,明确了解通过ssh传递的内容是很有帮助的。