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