[英]Passing an environment variable to a bash script over ssh from perl system
目前我正在通过 SSH 进入远程机器使用 perl 系统执行运行脚本:
system("ssh -t remote $dir/bashscript> $dir/stdout.stdout 2> $dir/stderr.stderr &");
我想将一个环境变量传递给我远程机器上的 bashscript(一个特定的目录)。 最好的方法是什么? 我应该在我的 bashscript 中添加什么来接受这个参数?
尝试这个:
system("ssh -t remote FOO='dir/dir/filename.stderr' $dir/bashscript> $dir/stdout.stdout 2> $dir/stderr.stderr &");
请注意,如果该值来自不受信任的来源,这可能是危险的。 你真的应该在你通过之前转义这个值。 例如,您可以执行以下操作:
my $foo='some value here';
$foo=~s/'/'\\''/g; # escape the '
system("ssh -t remote env FOO='$FOO' $dir/bashscript> $dir/stdout.stdout 2> $dir/stderr.stderr &");
在任何一种情况下, bashscript
都可以通过$FOO
访问该值。
@redneb 的所有警告都是关于清理输入的
ssh remotehost FOO=bar \; export FOO \; script > out 2> err
或者如果您确定远程主机上的 shell 将是bash
,则更紧凑
ssh remotehost export FOO=bar \; script > out 2> err
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.