+ Responder ao Tópico



  1. #1

    Padrão Tratar erro do shell_exec

    Boa noite a todos !
    Estou com um problema ao executar uma rotina de um sistema que estou desenvolvendo pois executo um prog externo do linux e quando ocorre o erro um erro no programa externo ele sismplesmente ingnora o resto dos comandos, abaixo o trecho onde ocorre o erro

    $query = $conn->CreateQuery($sql);

    while ( $query->MoveNext() )
    {
    list ( $ip, $mac, $key_unica, $id_pessoa ) = $query->GetRowValues();
    $key_id = trim(shell_exec("/bin/netcat -w 10 $ip 8181 | cut -d ';' -f 2")); //Aqui é onde ocorre o erro quando o netcat nao encontra o ip da variavel $ip e simplesmente para o loop e da o erro, preciso de algo para tratar este erro e preencher esta variavelo com algum valor.
    desde ja agradeço a todos !

  2. #2

    Padrão

    Tente algo assim:

    Código :
    $key_id = trim(shell_exec("/bin/netcat -w 10 {$ip} 8181 | cut -d ';' -f 2"));

    ou assim:

    Código :
    $key_id = trim(shell_exec("/bin/netcat -w 10 " . $ip . " 8181 | cut -d ';' -f 2"));

    abracos

  3. #3

    Padrão

    Muito obrigado pela atenção amigo mas não rolou, o erro ocorre quando o netcat tenta buscar um ip que está offline então acontece o erro no netcat e consequentemente o erro no meu script quando o ip da variavel $ip esta online tudo funciona normalmente.
    continuo na batalha obrigado a todos!

  4. #4

    Padrão

    Fica melhor ainda.

    Você realiza uma filtragem da saída do comando shell_exec com if...else.

    Assim você determina o quê e se será impresso na tela ou não.

    abracos

  5. #5

    Padrão

    Voce tem que dá permisão no /etc/sudoers

    Veja um exemplo:

    nobody ALL=NOPASSWD:/usr/sbin/iptables, /bin/sed, /usr/bin/awk, /sbin/arp, /usr/bin/grep, /usr/local/bin/sshpas
    apache ALL=NOPASSWD:/usr/sbin/iptables, /bin/sed, /usr/bin/awk, /sbin/arp, /usr/bin/grep, /usr/local/bin/sshpas

    No seu caso, vc está usando: "netcat" e o "cut"