簡體   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