Bh komut dosyasına bir unix / linux kullanıcısı nasıl eklenir


9

İşte benim test bash betiğim. Çalışmasını sağlayamıyorum. İki hata görüyorum:

  1. Use of uninitialized value $answer in chop at /usr/sbin/adduser line 589.
  2. Use of uninitialized value $answer in pattern match (m//) at /usr/sbin/adduser line 590.

İşte benim senaryom:

#!/bin/bash
sudo adduser myuser << ENDX
password
password
First Last




Y
ENDX
exit 0

İşte çıktı:

me@mycomputer$ ./adduser.sh 
Adding user `myuser' ...
Adding new group `myuser' (1001) ...
Adding new user `myuser' (1001) with group `myuser' ...
Creating home directory `/home/myuser' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
Changing the user information for myuser
Enter the new value, or press ENTER for the default
        Full Name []:   Room Number []:         Work Phone []:  Home Phone []:  Other []: Use of uninitialized value $answer in chop at /usr/sbin/adduser line 589.
Use of uninitialized value $answer in pattern match (m//) at /usr/sbin/adduser line 590.
Is the information correct? [Y/n] me@mycomputer$

Bu Kubuntu 12.04 LTS'de

$ bash --version
bash --version
GNU bash, version 4.2.25(1)-release (x86_64-pc-linux-gnu)

Aşağıda, ilgili iki satır numarasının gösterimleriyle adduser'dan (sistem komut dosyası - değiştirmediğim) satırlar verilmiştir:

for (;;) {
       my $chfn = &which('chfn');
    &systemcall($chfn, $new_name);
    # Translators: [y/N] has to be replaced by values defined in your
    # locale.  You can see by running "locale yesexpr" which regular
    # expression will be checked to find positive answer.
    print (gtx("Is the information correct? [Y/n] "));
    chop (my $answer=<STDIN>);        <-- LINE 589
    last if ($answer !~ m/$noexpr/o); <-- LINE 590
}

Yanıtlar:


31

Sadece stdin yerine komut satırı parametrelerini kullanın ve parola için chpasswd kullanın.

Örneğin:

sudo adduser myuser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
echo "myuser:password" | sudo chpasswd

2

adduserchfntam programı ve diğer kullanıcı bilgilerini okumak için harici programı çağırır . chfnarabellek dolusu bir girdi okur, sadece ihtiyacı olanı değil son Ysatırı da içerir. Daha addusersonra onay istendiğinde, Ysatır tarafından okundu (ancak yoksayıldı) chfn, bu nedenle addusergirişinde bir dosya sonu görüyor. Değişkenin $answerbir girdi satırı içermesi beklenir, ancak okunacak girdi olmadığı için tanımsızdır.

Bir komut dosyası yazdığınız için , verileri (şifre hariç) komut satırına iletin .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.