との比較:どのように私はnewbeだと私はこれやろうとしている文書からデータを取得し、変数
}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{
を私はデコードを実行すると、常に「ユーザーTALが存在する」と表示し、ときに私新しいユーザーも追加してください!わかりません。
get contentドキュメントと変数を比較するにはどうすればよいですか?あなたの助けのために
<?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>';
}
}
?>
感謝!!:
は、私はすべてのコードを貼り付け OM。
関連のないセキュリティノートでは、あなたが ';のようなユーザー名に対して防御していることを確認する必要があります。 rm -rf * ' –
' explode($ comprobacion) 'は2つのパラメータをとります。 'explode(" \ n "、$ comprobacion)'を実行してください。また、@ JoeCも正しいです。 'array_filter'は配列を返しますが、' $ usuario'は文字列です。 – neubert