使用变量来获取用户名,它会分成两部分

时间:2015-11-14 15:12:22

标签: regex perl sqlmap

我正在编写一个程序,它将使用sqlmap进行简单扫描,然后使用正则表达式模式在我的数据库中查找严重错误。

问题在于我将Select TimeTaskCompleted, Task From Task Where TimeTaskCompleted between ‘07/01/2015’ and ‘09/30/2015’ 的输出存储在文本文件中。如果我将该文件放在根目录中就可以了,但如果我尝试将其存储在登录用户的主目录下,那么我会收到此错误

sqlmap

以下是导致此错误的代码

sh1: cannot creat /home/user
sh2: /Desktop/results.txt not found

我不明白为什么变量$u = `id -u -n`; my $com = `sqlmap -m $ARGV[0] >> /home/$u/Desktop/results.txt --batch`; 将路径$u分成两个单独的字符串。

1 个答案:

答案 0 :(得分:7)

Perl具有获取用户名的功能,无需调用外部命令:

my $u = getpwuid $<;

请注意,没有任何内容可以保证用户的住所位于/home/$u(参见root的主页:/root)。 File::HomeDir可以帮到你。或者,使用~/作为shell命令。