解决了

如何从桌面运行可执行脚本

  • 2019年9月13日
  • 4回复
  • 1473的浏览量

Userlevel 2
徽章 +2
嗨。我是一个脚本编写新手,特别是使用Nutanix。我可以编写Powershell脚本,但是转换成shell脚本让我的大脑陷入了困境。我有一些acli命令创建一个新的虚拟机,创建一个新的磁盘和一个新的网卡,但我不确定如何运行它们作为一个可执行文件从我的Windows桌面。我们的集群是Nutanix AHV。

所以我从命令行运行这个,打开putty并连接。没有脚本也能很好地工作。
putty.exe -ssh admin@xxx.xxx.xxx.xxx -pw ****** -m "C:\newVM.sh"

脚本:
acli;
#创建Server2016的克隆
# vm。clone aTest clone_from_vm="Server2016RefImage"内存=8G num_cores_per_vcpu=2 num_vcpus=2;

#创建D驱动器
# vm。disk_create aTest bus=scsi create_size=200G index=1 container=" container -1";

#添加一个网卡
# vm。nic_create aTest connected=true network="Vlan6";

如果我在putty中运行它,每一行都会运行得很好,但我不确定我是否正确地将命令串在一起。如果我尝试执行脚本,它会打开putty会话,然后冻结。

我是不是搞错对象了?有什么地方可以让我学到一些这方面的基本知识吗?youtube上的视频还是Pluralsight上的?nutanix的文档只能提供给我这么多,除此之外,在这里我找不到任何其他资源。很抱歉这个新手的问题,但是我被难住了。
图标

最佳答案galad20032019年9月17日16:05

\nacli vm.clone aTest clone_from_vm=\"Server2016RefImage\" memory=8G num_cores_per_vcpu=2 num_vcpus=2;
\n
\nI can get them to run now using putty or plink, there seems to be no difference but what I can't do now is run multiple commands one after another. It will now clone my existing VM but I can't get it to add the hard drive or NIC from a script.
\n
\nDo I need to add in a time delay between commands? Maybe this is something that would work better with a product like Ansible?
\n
\nIdeally I would like to just have the script prompt me for a VM name and IP when I run it.
\n
\nIf there is a better way to do this please let me know. Again, I am used to running PS scripts from my laptop to a server and they execute the script. I am just trying to do the equivalent shell commands and I am just not that well versed in shell scripting.
\n
\nI see Nutanix has PS commandlets but I have not gotten that to work in our environment yet and the ACLI are so elegant I hate to not use them.","className":"post__content__best_answer"}">
查看原始

4回复

Userlevel 1
徽章 +3
要以编程方式将命令传递给puTTY会话,您可能希望尝试plink。它可以从相同的站点获得,您可以将命令作为希望执行的脚本传递。这可能对你更好。

这里有一些例子可以帮助你:
https://www.thegeekstuff.com/2017/05/putty-plink-examples/

享受吧!
Userlevel 2
徽章 +2
所以我想通过把acli放在命令前面来传递命令。这解决了我的冰冻问题。这工作。
acli vm。clone aTest clone_from_vm="Server2016RefImage"内存=8G num_cores_per_vcpu=2 num_vcpus=2;

我可以让他们现在运行使用putty或plink,似乎没有区别,但我现在不能做的是一个接一个地运行多个命令。它现在将克隆我现有的虚拟机,但我不能让它从脚本添加硬盘驱动器或网卡。

我需要在命令之间添加一个时间延迟吗?也许像Ansible这样的产品会更好地使用这个?

理想情况下,我希望在运行脚本时,脚本只提示我输入虚拟机名称和IP。

如果有更好的方法来做这请让我知道。同样,我习惯于从我的笔记本电脑到服务器运行PS脚本,然后它们执行脚本。我只是试图做等效的shell命令,我只是不太精通shell脚本。

我看到Nutanix有PS命令集,但我还没有让它在我们的环境中工作,ACLI是如此优雅,我讨厌不使用它们。
Userlevel 2
徽章 +2
我明白了。我在其他行上打错了。将ACLI放在每个命令前面可以让它运行。使用;或者&&也将允许它一个接一个地运行命令。谢谢你的帮助。
Userlevel 1
徽章 +3
我很高兴你想通了。这是个好消息!

回复


Baidu