我正在尝试自动化在linux机器中添加额外存储的过程。我在Windows计算机上安装的PowerShell中使用plink
。
以下是代码:
$plinkpath = "C:\Users\mydrive\Modules\plink.exe"
if (Test-Path $plinkpath) {
Set-Alias plink $plinkpath
} else {
throw "Plink.exe is reqruied"
}
$passw = "linuxadmin$123"
$commands = @(
"sudo su;",
"pvcreate /dev/sde;",
"vgcreate test_vog /dev/sde",
"lvcreate -l 100%FREE -n test_lev test_vog;",
"mkfs.ext3 /dev/test_vog/test_lev;",
"mkdir /azurenew;",
"echo ""/dev/test_vog/test_lev /azurenew/ ext3 defaults 1 1"" >> /etc/fstab;",
"mount /azurenew/;"
)
方法1:使用.ppk文件
plink -ssh -i "C:\Users\amurthy\Documents\WindowsPowerShell\Modules\sshprivate.ppk" linuxadmin@xx.xx.xx.xxx $commands
在上述情况下,PowerShell挂起并且在控制台上没有响应。不确定发生了什么。
方法2:使用直接登录
plink -P "22" -v "linuxadmin@xx.xx.xx.xxx" -pw "linuxadmin$123" $commands
在这里,我在控制台上得到以下回复
使用用户名" linuxadmin"。 发送密码 密码验证失败
我不明白为什么passoword身份验证失败了,虽然我能够使用带有该密码的putty.exe登录。
有谁可以帮我解决上面的自动化问题?如果您有任何更好的解决方案,我们非常欢迎。
答案 0 :(得分:0)
密码登录尝试失败,因为您在双引号字符串中定义了密码。 PowerShell尝试在UIImage
中展开(未定义的)变量$123
,因此您实际上只传递了linuxadmin$123
作为密码。您可以使用单引号字符串来避免这种情况,但公共密钥身份验证(您的第一种方法)无论如何都是更好的方法,所以我建议坚持使用。
我不确定为什么你的第一种方法导致控制台挂起。如果密钥受密码保护,则应提示您输入密码。在linuxadmin
结尾处有一个分号丢失,但是如果这导致了一个问题,我希望看到一条错误信息。
尝试使用参数"vgcreate test_vog /dev/sde"
(详细消息)运行plink
,以便更好地了解正在发生的事情。