使用su从perl脚本执行系统命令

时间:2016-01-08 08:55:48

标签: perl ksh

我有一个perl脚本如下: test.pl

 #!/usr/bin/perl
 system("ls -lart");

这种方法很好但是当我按照下面的方式运行它时会失败:

su guest test.pl

它在第二行失败如下:

0403-057 Syntax error at line 2 : `(' is not expected.

2 个答案:

答案 0 :(得分:1)

来自man 1 su

OPTIONS
       The options which apply to the su command are:

       -c, --command COMMAND
           Specify a command that will be invoked by the shell using its -c.

           The executed command will have no controlling terminal. This option cannot be used to execute interractive programs which need a controlling TTY.

所以你应该使用

su -c "perl /path/to/test.pl --maybe some.options" guest

答案 1 :(得分:0)

您必须使用-c的{​​{1}}选项执行此操作。问题是,如果你这样启动它,它应该是一个shell脚本。所以你必须告诉su实际加载shell然后执行命令。

最有可能

su

将起作用(当然,只要它在用户的命令路径中)。