【问题标题】:syntax error in commands [closed]命令中的语法错误[关闭]
【发布时间】:2013-10-03 01:25:14
【问题描述】:

当用户单击按钮时,我有一个 iframe 从控制面板发送命令。使用下面的代码,当用户点击时按钮没有任何反应,因为代码中存在语法错误。

$items['googledotcom'] = array
        (
            'description'=>'DNS resolution test',
            '1'=>1,
            '0'=>0,
            'fixCommand'=>'EXC service network restart; echo "nameserver 8.8.8.8" >> /etc/resolv.conf; sleep 10; health check',
        );

上面的代码不起作用,因为这行:echo "nameserver 8.8.8.8" >> /etc/resolv.conf;

但是当我删除上面的行时,代码会起作用。但是我还需要添加上面的行。

对语法有什么建议吗?

谢谢!

更新

命令格式:

doCommand Javascript:

<script type='text/javascript'>

function doCommand(command)
{
    var r=confirm("Are you sure you want to \"" + command + "\"");
    if (!r)
    {
        return;
    }

    $.post('/device/commands-frame/', { id : '<?=$this->site->id;?>', act : command, command : command }, function(data)
    {
        alert('Command has been sent');
    });
}
</script>

【问题讨论】:

  • 你怎么知道它不起作用?
  • 当按钮点击时,什么也没有发生。否则我会收到警报
  • “什么都没有发生” 不是很有帮助。您是否启用了错误报告?尝试发出该命令的结果是什么?
  • 我正在使用 javascript 将此命令发送到远程设备。我更新了一张图片,看看命令是如何发送的。当我单击发送按钮时,我应该会收到一条确认消息。但是这段代码没有给出任何输出。

标签: javascript php shell shell-exec


【解决方案1】:

试试这个:

<?php
$items['googledotcom'] = array
    (
        'description'=>'DNS resolution test',
        '1'=>1,
        '0'=>0,
        'fixCommand'=>"EXC service network restart; echo 'nameserver 8.8.8.8' >> /etc/resolv.conf; sleep 10; curo health check"
    );
    var_dump($items);
?>

这表明:

array(1) { ["googledotcom"]=> array(4) { ["description"]=> string(19) "DNS resolution test" [1]=> int(1) [0]=> int(0) ["fixCommand"]=> string(103) "EXC service network restart; echo 'nameserver 8.8.8.8' >> /etc/resolv.conf; sleep 10; curo health check" } }

现在我用下面的小提琴测试这个值,它正在工作: http://jsfiddle.net/EjXmp/

该小提琴包含以下代码:

$(document).ready(function(){

$("#clickme").click(function(){
doCommand("EXC service network restart; echo 'nameserver 8.8.8.8' >> /etc/resolv.conf; sleep 10; curo health check");
});

function doCommand(command)
{
var r=confirm("Are you sure you want to \"" + command + "\"");
if (!r)
{
    return;
}

$.post('/device/commands-frame/', { id : '<?=$this->site->id;?>', act : command, command : command }, function(data)
{
    alert('Command has been sent');
});
}

});

【讨论】:

  • 除了添加一些调试之外,这有什么不同?
  • 在我的本地主机上测试过,并且工作正常...没有错误...感谢 -1 ;)
  • OP 的代码怎么样。这不起作用吗?
  • 不管你说什么,伙计 ;)
  • 我并不是要不屑一顾。您的代码与 OP 没有什么不同,只是在 nameserver 8.8.8.8 周围切换引号,这在 shell 上下文中没有任何区别。
猜你喜欢
  • 2021-10-13
  • 1970-01-01
  • 2014-01-10
  • 2021-04-30
  • 2020-01-08
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多