繁体   English   中英

从 perl 系统通过 ssh 将环境变量传递给 bash 脚本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM