passwd cez php pouzitim ssh2

Programovacie jazyky, rady, poradňa...
caesar1987
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3001
Registrovaný: 02 okt 2005, 0:57
Bydlisko: Nové Zámky
Kontaktovať používateľa:

passwd cez php pouzitim ssh2

Príspevok od používateľa caesar1987 »

Ahojte

ako zmeni heslo uzivatela cez php pouzitim ssh2?

skusam to takto

Kód: Vybrať všetko

 
  $command1 = "/usr/sbin/useradd " . $user_meno;
  $command2 = "/usr/bin/passwd " . $user_meno ;
  $command3 = $user_heslo;
  echo $a = $shell->cmdExec_ret($command1);
  echo $a = $shell->cmdExec_ret($command2);
  echo $a = $shell->cmdExec_ret($command3);
  echo $a = $shell->cmdExec_ret($command3);
cmdExec_ret vyzera takto

Kód: Vybrať všetko

function cmdExec_ret(){
    
    $argc = func_num_args();
    $argv = func_get_args();
    
    $cmd = '';
    for($i=0; $i<$argc ; $i++){
      if( $i != ($argc-1) ) {
        $cmd .= $argv[$i]." && ";
      }else{
        $cmd .= $argv[$i];
      }
    }
    
    $stream = ssh2_exec($this->con, $cmd, $this->shell_type);
    stream_set_blocking($stream, true);
    return fread($stream, 4096);


  }
uzivatela - command 1 mi zbehne, poto mi vypise

Kód: Vybrať všetko

Changing password for user uzivatel. bash: heslo: command not found bash: heslo: command not found
poblem podla mna je v tom ze sa passwd ukonci a potom vola prikaz heslo namiesto zadania hesla(ten vola urcite :) ).

mate nejake napady?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: passwd cez php pouzitim ssh2

Príspevok od používateľa audiotrack »

vymazať riadky:
$command3 = $user_heslo;
echo $a = $shell->cmdExec_ret($command3);
echo $a = $shell->cmdExec_ret($command3);

btw: vo funkcii cmdExec_ret() si tie parametre mohol spojiť cez implode a nemusel si sa hrať s tým cyklom
caesar1987
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3001
Registrovaný: 02 okt 2005, 0:57
Bydlisko: Nové Zámky
Kontaktovať používateľa:

Re: passwd cez php pouzitim ssh2

Príspevok od používateľa caesar1987 »

a ako zmenim heslo ked ich vymazem? mne ide prave o tu zmenu hesla
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: passwd cez php pouzitim ssh2

Príspevok od používateľa audiotrack »

echo $a = $shell->cmdExec_ret($command2);
echo $a = $shell->cmdExec_ret($command3);
echo $a = $shell->cmdExec_ret($command3);

Changing password for user uzivatel. bash: heslo: command not found bash: heslo: command not found

tu máš farebne zpárované ktorá chyba patrí ku ktorému príkazu. V $command3 máš iba nejaký reťazec, to samotné heslo a ty to spúšťaš ako príkaz. V $command2 máš zmenu hesla. Ten $command3 neviem prečo vôbec spúšťaš, a neviem prečo dvakrát
caesar1987
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3001
Registrovaný: 02 okt 2005, 0:57
Bydlisko: Nové Zámky
Kontaktovať používateľa:

Re: passwd cez php pouzitim ssh2

Príspevok od používateľa caesar1987 »

prikaz "passwd meno_uzivatela" po zadani caka 2x na vstup hesla

takze v konzole to vyzera takto

passwd meno_uzivatela <enter>
heslo<enter>
heslo<enter>


ale mne ssh uz ten prvy prikaz ukonci a necaka na heslo a neviem preco a s tym chcem pomoct.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Re: passwd cez php pouzitim ssh2

Príspevok od používateľa chrono »

Nechýba ti tam parameter --stdin a potom presmerovanie hesla cez rúru? Inak useradd má aj parameter, pomocou ktorého sa dá nastaviť heslo (ale musí tam byť už zakódované heslo).
caesar1987
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3001
Registrovaný: 02 okt 2005, 0:57
Bydlisko: Nové Zámky
Kontaktovať používateľa:

Re: passwd cez php pouzitim ssh2

Príspevok od používateľa caesar1987 »

viem ze sa da heslo zadat ako parameter, ale nakolko sa da heslo aj zmenit tak je jedno ze ci to budem riesit teraz alebo o 10 minut :)

ako presne to myslis s tym presmerovanim na ruru?

//autoeditácia príspevku (04 Júl 2010, 13:08)
nejak takto?

Kód: Vybrať všetko

$command2 = '/bin/echo ' . $user_heslo . ' | /usr/bin/passwd --stdin ' . $user_meno;
v konzole to funguje ale cez php nie :(

vypise len toto

Kód: Vybrať všetko

Changing password for user skuskaf.
//autoeditácia príspevku (04 Júl 2010, 13:17)
tak toto nechapem ale ked som upravil funkciu cmdExec_ret() na

Kód: Vybrať všetko

function cmdExec_ret(){
    
    $argc = func_num_args();
    $argv = func_get_args();
    
    $cmd = '';
    for($i=0; $i<$argc ; $i++){
      if( $i != ($argc-1) ) {
        $cmd .= $argv[$i]." && ";
      }else{
        $cmd .= $argv[$i];
      }
    }
    
    $stream = ssh2_exec($this->con, $cmd, $this->shell_type);
    stream_set_blocking($stream, true);
    return stream_get_contents($stream);

  }
tak to uz funguje.

vie mi niekto vysvetlit preco to pri
return stream_get_contents($stream); funguje a pri

return fread($stream, 4096); nie?
Napísať odpoveď