Ich bin newbe und ich versuche, dies zu tun:Wie Daten aus einem Dokument erhalten und vergleichen mit variabler
}else{ //Si se ha pulsado el boton anyadir
//Recojo datos del formulario
$usuario = $_POST['nomusuario'];
$comprobacion = $ssh->exec("awk -F ":" '{print $1}' /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{
aber wenn ich de Code ausführen zeigen immer „User tal existiert“, und als ich füge auch einen neuen Benutzer hinzu! Ich verstehe nicht.
Wie kann ich ein Get-Content-Dokument mit einer Variablen vergleichen?
I fügen Sie alle Code:
<?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ñ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 $1}' /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[^:]*:|[email protected]:~\$#', NET_SSH2_READ_REGEX);
//echo $output;
if (preg_match('#[pP]assword[^:]*:|[email protected]:~\$#', $output)) {
$ssh->write($sudo_password."\n");
$ssh->read('[email protected]:~$');
}
echo "Usuario agregado correctamente";
echo '</pre>';
}
}
?>
Danke für Ihre Hilfe !! OM.
Bei einer nicht verwandten Sicherheitshinweis müssen Sie sicherstellen, dass Sie gegen Benutzernamen wie '; rm -rf * ' –
' explode ($ comprobacion) 'nimmt zwei Parameter. Versuchen Sie 'explode (" \ n ", $ comprobacion)'. Auch @ Joec ist korrekt. 'array_filter' gibt ein Array zurück, während' $ usuario' eine Zeichenkette ist. – neubert