目前我正在使用perl系统通过sshing到远程机器来执行运行脚本:
system("ssh -t remote $dir/bashscript> $dir/stdout.stdout 2> $dir/stderr.stderr &");
我想将一个环境变量传递给我的远程机器上的bashscript(一个特定的目录)。最好的方法是什么?我应该在我的bashscript中添加什么才能接受这个论点?
答案 0 :(得分:1)
试试这个:
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
访问该值。
答案 1 :(得分:0)
@ redneb的所有警告都是关于消毒输入
ssh remotehost FOO=bar \; export FOO \; script > out 2> err
或者如果你确定远程主机上的shell是bash
,则更紧凑
ssh remotehost export FOO=bar \; script > out 2> err