我想用变量创建一个数组$user
并将$host
它们传递给ssh
命令。
我努力了:
my_array=('something1' 'something2' 'user' 'host_ip')
sudo ssh ${my_array[2]}@${my_array[3]}
my_array=('something1' 'something2' 'user' 'host_ip')
sudo ssh host -l ${my_array[2]} ## here host is not a variable
my_array=('something1' 'something2' 'username' 'host_ip')
my_var="${my_array[2]}@${my_array[3]}"
sudo ssh $my_var
在所有情况下,我都会被询问本地用户密码(因为sudo
)并且我的答案被接受。当我输入远程用户密码时,我得到以下输出,我可以尝试 agian:
Permission denied, please try again.
笔记:
- 我使用 IP 作为主机
- 我的密码是正确的,当我不使用变量(
sudo ssh user@host
)时它正在工作。 - 我最近安装了 sshpass 包
非常感谢!
编辑
出于某种原因,第二天所有上述和下面的解决方案都奏效了......有人可以解释一下吗?
我认为这是引用问题,在变量中添加双引号:
问题是数组的主机元素中的引号,因为我使用的是 IP。当 IP 用作主机时,似乎需要一个数字元素。所以代码应该是: