我试图通过运行以下命令打开从本地计算机到远程计算机的ssh连接
sender.rb
在本地计算机上,并调用脚本
receiver.rb
在远程计算机上,提供一个密码作为参数。
RB
require 'net/ssh'
ssh_opts = {
:host_name=>"19.09.20.18",
:user=>"manual-ace",
:password=>"42bike24",
:port=>1800,
:auth_methods=>["password"],
}
Net::SSH.start(nil, nil, ssh_opts) do |ssh|
psw = "TEst$1234".encode("UTF-8")
p ssh.exec!("ruby path/to/receiver.rb #{psw}")
end
收款机
ARGV.each do |my_str|
p my_str # OUTPUT: "TEst234"
end
我有一个问题似乎与bash将字符串解释为命令有关。密码中的符号在发送时不会被接收。
$1
从文本中删除。插入
$
删除下列字符;有两个或多个
$
删除第一个字符与最后一个字符之间的所有字符(
T$Es$t12$34
变成
T4
)其他一些字符,如
<>\;"
有相同的行为或提高
bash: (command): command not found
.
我试着和
encoding
和
Shellwords
. 我想用
special characters for passwords
如
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
虽然,虽然
any printable character that the user inputs should be allowed
.