隐藏Perl脚本的命令行参数

amp*_*ine 5 linux perl command-line

假设我编写了一个名为"foo.pl"的Perl脚本,该脚本通过-p交换机接收密码参数.

但是,在它运行时,任何人都可以执行ps并查看整个命令行字符串,包括密码:

$ ps a |grep 'foo\.pl'
32310 pts/4    S+     0:00 /usr/bin/perl -w ./foo.pl -p password
32313 pts/5    S+     0:00 grep foo.pl
Run Code Online (Sandbox Code Playgroud)

隐藏密码并用类似的东西替换它的最简单/最简单的方法是什么xxxxxx

sid*_*yll 4

从脚本内部询问密码,这样您就不必将其作为参数传递。


更新

显然这对我有用,模拟一种mysql行为:

#!/usr/bin/perl
($0 = "$0 @ARGV") =~ s/--password=\K\S+/x/;
<STDIN>;

$ ./s --user=me --password=secret
^Z
$ ps
  PID TTY           TIME CMD
 1637 ttys000    0:00.12 -bash
 2013 ttys000    0:00.00 ./s --user=me --password=x
Run Code Online (Sandbox Code Playgroud)

MacOS 10.6下