ruby中的命令行参数可以擦除吗?
出于安全原因,我希望在解析命令行参数后删除它们:ruby中的命令行参数可以擦除吗?,ruby,unix,argv,Ruby,Unix,Argv,出于安全原因,我希望在解析命令行参数后删除它们: login.rb --user me --password wombats 我试过ARGV.clear和$*.clear 对ARGV或$*的更改都不会反映在ps中您可以通过更改$PROGRAM\u name变量来更改Ruby进程的名称(如ps(1)所示)。下面是一个有意循环的示例程序,例如: #!/usr/bin/env ruby puts $PROGRAM_NAME $PROGRAM_NAME = "a ruby process" loo
login.rb --user me --password wombats
我试过ARGV.clear和$*.clear
对ARGV或$*的更改都不会反映在ps中您可以通过更改
$PROGRAM\u name
变量来更改Ruby进程的名称(如ps(1)
所示)。下面是一个有意循环的示例程序,例如:
#!/usr/bin/env ruby
puts $PROGRAM_NAME
$PROGRAM_NAME = "a ruby process"
loop { }
当它像这样运行时:
$ ./loop.rb password
./loop.rb
它在ps
中显示了“一个ruby进程”:
$ ps aux | grep ruby
stuart 85292 98.9 0.1 2439468 4340 s004 R+ 8:43PM 0:02.96 a ruby process
stuart 85341 0.0 0.0 2432768 600 s011 S+ 8:43PM 0:00.00 grep --color ruby
因此,您可以使用
$PROGRAM\u NAME
变量通过ps
更改流程的显示方式,我在下面提供了一个可能的答案,尽管另一种方法是根本不接受命令行上的密码,而是通过STDIN
提示用户输入密码。登录后清除终端是否足够?如果是这样,您可以在解析命令行参数后使用system'clear'
。某些系统允许您删除命令行参数。可以在运行时重命名$PROGRAM\u NAME
全局并尝试愚弄ps
,但该命令将保留在历史缓冲区中。如果使用<代码> SUDO ,将跟踪这些命令。您可以考虑改变问题的想法,例如提供文件名或路径,其中存储密码,并读取,而不是直接从命令行提供。这将保持历史记录不变,但不会公开密码。当然,应该采取正常的文件权限预防措施。