如何从文档中获取数据并与变量进行比较

How get data from a document and compare with variable

我是新手,我正在尝试这样做:

            }else{ //Si se ha pulsado el boton anyadir

            //Recojo datos del formulario
            $usuario = $_POST['nomusuario'];

            $comprobacion = $ssh->exec("awk -F ":" '{print }' /etc/passwd | grep $usuario", NET_SSH2_READ_SIMPLE);
            $filtrado = array_filter(explode($comprobacion));

            if($filtrado!=$usuario){
                echo '<div class="alert alert-warning">';
                    echo 'User '.$usuario.' exists.';
                echo '</div';
                echo $filtrado;
            }echo{

但是当我 运行 解码时总是显示 "User tal exists",当我添加新用户时也是如此!没看懂。

如何将获取的内容文档与变量进行比较?

我粘贴所有代码:

<?php

            set_include_path(get_include_path() . PATH_SEPARATOR . '/var/www/html/phpseclib');

            include ('/var/www/html/phpseclib/Net/SSH2.php');
            include ('/var/www/html/phpseclib/Crypt/RSA.php');

            $ipConexion=$_REQUEST['ipconexion'];
            $ipConexion='10.0.0.107';
            $sudo_password='retaco';

            define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);

            $ssh = new Net_SSH2($ipConexion);
            $key = new Crypt_RSA();
            $key->loadKey(file_get_contents('/var/www/html/phpseclib/Crypt/id_rsa'));

            if (!$ssh->login('pi', $key)) {
                exit('Login failed:');
            }

        if(!isset($_POST['anyadir'])){ //Si NO se ha pulsado el boton anyadir

            echo '<form action="users.add.php" method="post">';

            echo '<input type="text" class="form-control" placeholder="usuario" name="nomusuario" />';

            ...

            echo 'El host conectado sporta '; echo $viewShell = $ssh->exec('cat /etc/shells | tail -n+2', NET_SSH2_READ_SIMPLE);
                    echo '<hr />';

            echo '<button type="submit" value="anyadir" name="anyadir" class="btn btn-default">A&ntilde;adir usuario</button>';
            echo '</form>';

        }else{ //Si se ha pulsado el boton anyadir

            //Recojo datos del formulario
            $usuario = $_POST['nomusuario'];

            $comprobacion = $ssh->exec("awk -F ":" '{print }' /etc/passwd | grep $usuario", NET_SSH2_READ_SIMPLE);
            $filtrado = array_filter(explode($comprobacion));

            if($filtrado!=$usuario){
                echo '<div class="alert alert-warning">';
                    echo 'El usuario '.$usuario.' ya existe.';
                echo '</div';
                echo $filtrado;
            }else{

                //echo '<div class="alert alert-success">';
                //    $useradd = $ssh->exec('useradd '.$usuario, NET_SSH2_READ_SIMPLE);
                //echo '</div';

                $ssh->read('/.*@.*[$|#]/', NET_SSH2_READ_REGEX);
                $ssh->write("sudo useradd ".$usuario."\n");

                $output = $ssh->read('#[pP]assword[^:]*:|username@username:~$#', NET_SSH2_READ_REGEX);
                //echo $output;

                    if (preg_match('#[pP]assword[^:]*:|username@username:~$#', $output)) {
                        $ssh->write($sudo_password."\n");
                        $ssh->read('username@username:~$');
                    }
                echo "Usuario agregado correctamente";
                echo '</pre>';
            }

        }

        ?>

感谢您的帮助!! 哦.

array_filter returns 一个数组,而我假设 $usuario 是一个字符串。那些永远不会相等。

问题在这里:

$comprobacion  = 'awk -...'; // you've got a name from awk
$filtrado = array_filter(explode($comprobacion)); // but explode needs 2 parameters

因此代码将导致:

Warning: explode() expects at least 2 parameters, 1 given .... on line ...
Warning: array_filter() expects parameter 1 to be array, null given in .... on line ...

我假设您已将指令 "display_errors" 设置为关闭,因此请检查您的日志以查看这些警告。

此时变量$filtrado的值会被设置为NULL,$usuario就有值了。结果条件 if($filtrado!=$usuario) 将始终为真,您收到了消息。

非常感谢您的建议。我可以在你的帮助下解决问题...

新代码:

            }else{ //Si se ha pulsado el boton anyadir

            //Recojo datos del formulario
            $usuario = $_POST['nomusuario'];
            $directorio = $_POST['directorio'];
            $grupos = $_POST['grupo'];
            $shell = $_POST['shell'];
            $comentario = $_POST['comentario'];

            $comprobacion = $ssh->exec('cat /etc/passwd | grep '.$usuario.' | cut -f1 -d":"', NET_SSH2_READ_SIMPLE);
            //$comprobacion = $ssh->exec("grep -w ".$usuario, NET_SSH2_READ_SIMPLE);

            if($comprobacion!=""){

                echo '<div class="alert alert-warning">';
                    echo 'El usuario '.$usuario.' ya existe.';
                echo '</div';

            }else{

现在,如果我写一个存在的用户代码显示 "thar user exist"。 如果不存在则创建一个新用户。

有时候我们需要很多眼睛...

我很高兴。非常感谢。

干杯! 哦.