解决了

如何从桌面运行执行脚本

  • 2019年9月13日
  • 4个答复
  • 1468次观点

UserLevel 2
徽章 +2
你好。我很陌生,特别是在Nutanix上写作。我可以做的powershell脚本很好,但是将转换为shell脚本的转换使我的大脑陷入困境。我有一些ACLI命令来创建新的VM,创建一个新的磁盘和一个新的NIC,但是我不确定如何从Windows桌面上运行它们作为可执行文件。我们的集群是Nutanix AHV。

因此,我从命令行运行此操作以打开柱塞并连接。没有脚本,它可以正常工作。
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”;

#ADD A NIC
#vm.nic_create atest connected = true Network =“ vlan6”;

如果我在油灰中运行它,每行都可以正常运行,但是我不确定是否正确地将命令串在一起。如果我尝试执行脚本,它将打开腻子会话,然后冻结。

我只是吠叫错误的树吗?我可以在某个地方为此提供一些基本知识吗?一些YouTube视频或PluralSight上的其他视频?Nutanix的文档只能让我走得太远,除此之外,在这里,我找不到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
要以编程方式传递命令,请尝试尝试使用PLINK。它可以从同一站点获得,您可以将命令作为要执行的脚本传递。这可能对您有利。

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

享受!
UserLevel 2
徽章 +2
因此,我想出了通过将ACLI放在命令前来传递命令。这解决了我遇到的冻结问题。所以这有效。
acli vm.clone atest clone_from_vm =“ server2016 refimage”内存= 8G num_cores_per_vcpu = 2 num_vcpus = 2;

我可以让他们现在使用腻子或plink运行,似乎没有区别,但是我现在不能做的是一个接一个地运行多个命令。现在它将克隆我现有的VM,但我无法获得它来添加脚本中的硬盘驱动器或NIC。

我需要在命令之间添加时间延迟吗?也许这可以与Ansible这样的产品效果更好?

理想情况下,我只想在运行它时提示我获取VM名称和IP。

如果有更好的方法来做到这一点,请告诉我。同样,我习惯于将PS脚本从笔记本电脑运行到服务器,然后他们执行脚本。我只是想执行等效的外壳命令,而我并不是那么精通外壳脚本。

我看到Nutanix有PS命令,但我还没有在我们的环境中工作,而ACLI非常优雅,我讨厌不使用它们。
UserLevel 2
徽章 +2
我想到了。我在其他行中有一个错别字。将ACLI放在每个命令的前面可以运行。使用 ;或&&还将允许它运行一个命令。谢谢您的帮助。
Userlevel 1
徽章 +3
我很高兴您弄清楚了。这真是个好消息!

回复


Baidu