GNU/Linux >> Belajar Linux >  >> Linux

[Linux] :7 hal yang akan Anda pelajari saat Anda mulai menulis skrip Shell sederhana

Seorang administrator sistem akan selalu berpikir untuk mengotomatisasi sebagian besar tugasnya sehingga pekerjaan rutin diselesaikan dengan mudah dan dia dapat berkonsentrasi pada beberapa hal penting lainnya. Salah satu tugas tersebut adalah pembuatan akun Unix. Di sini kita akan melihat bagaimana kita dapat membuat akun Unix menggunakan skrip shell. Dalam perjalanan membuat skrip shell ini, meskipun tugasnya tampak sederhana, Anda akan belajar banyak hal !

1. Ikuti pedoman standar selama pembuatan skrip untuk keterbacaan yang lebih baik

Sebagian besar bahasa pemrograman lain seperti C, C++, JAVA memiliki seperangkat "Praktik Terbaik" yang akan diikuti selama pengkodean. Namun seperti namanya, skrip shell adalah jenis program yang ditulis untuk lingkungan run-time khusus pada waktu cepat. Waktu cepat berarti sangat kurang mengikuti aturan. Mengikuti praktik terbaik akan membuat skrip Anda lebih terbaca, dapat digunakan kembali, dan dapat dipelihara.

Jadi dalam skrip ini kita akan menggunakan fungsi untuk memodulasi kode. Cuplikan kode di bawah ini untuk penggunaan fungsi() :

usage()
{
echo "Usage: $PROGNAME  [options]
Options:
-u username,            Provide name for new user account creation
-p password,            Provide complex password
-h help,                display this help message and exit      "
exit 1;
}

Fungsi penggunaan ini dipanggil setiap kali bantuan diperlukan dalam menjalankan skrip atau untuk argumen yang salah, dll.,

2. Bagaimana menerima argumen dalam skrip shell

Dalam skrip shell, menerima argumen dilakukan seperti di bawah ini :

$0 - Script Name
$1 - First argument
$2 - Second argument
$# - No. of arguments
$@ - All arguments

Contoh:

Tue Oct 29>$./account_creation.sh username password

Dalam contoh di atas $0 adalah account_creation.sh, $1 adalah nama pengguna dan $2 adalah kata sandi. $# akan mengembalikan 2 dan $@ mengembalikan semua argumen.

3. Opsi Baris Perintah menggunakan "Getopt" di skrip shell

Menyediakan opsi baris perintah adalah cara yang lebih baik untuk menyajikan skrip Anda kepada pengguna. Anda dapat menulis skrip untuk mendukung opsi baris perintah pendek dan panjang. Misalnya:untuk menampilkan pesan bantuan, Anda dapat menggunakan opsi “-h” atau “–help”. Konvensi yang umum adalah bahwa opsi panjang didahului dengan hash ganda dan yang kecil dengan tanda hubung tunggal. Di bawah ini adalah kodenya :

while getopts ":h:u:p:" OPTION
do
        case "$OPTION" in
        h)
                usage
                ;;
        u)
                USERNAME=${OPTARG}
                ;;
        p)
                PASSWORD=${OPTARG}
                ;;
        \?)
                usage
                ;;
        esac
done

Perintah getopts adalah perintah bawaan Korn/POSIX Shell yang mengambil opsi dan argumen opsi dari daftar parameter. Baca lebih lanjut tentang getopts di sini. Sederhananya untuk setiap opsi baris perintah, loop dieksekusi dan nilai yang sesuai untuk setiap opsi disimpan dalam variabel yang ditetapkan. Di bawah ini adalah cuplikan kode untuk memeriksa apakah parameter yang diteruskan kosong :

shift $((OPTIND-1))
if [ -z "${USERNAME}" ] || [ -z "${PASSWORD}" ]; then
    usage
fi

4. Cara menjalankan perintah Linux dari skrip shell

Di sini tambahkan pengguna adalah perintah Linux yang digunakan untuk membuat akun.

/usr/sbin/useradd -m ${USERNAME}

Di sini Anda perlu memperhatikan bahwa jika pengguna sudah ada, maka Anda mungkin mendapatkan beberapa peringatan sebagai stderr yang ditunjukkan pada gambar di bawah ini :

5. Cara mengabaikan/mengalihkan stdout dan stderr ke file log

Bash dan shell modern lainnya menyediakan fasilitas pengalihan I/O. Nomor aliran I/O standar Linux adalah sebagai berikut :

Pegangan Nama Deskripsi
0 stdin Masukan standar
1 stdout Keluaran standar
2 stderr Kesalahan standar

sebuah. Mengarahkan aliran stderr ke file :

$script 2> error.log

b. Mengarahkan aliran stdout ke file :

$script 1> output.log

c. Arahkan ulang stderr dan stdout ke file :

$script  &>file.out

Jika Anda ingin mengabaikan pesan stderr dan stdout ini, alihkan ke /dev/null alih-alih file.

$script 2>/dev/null

6. Cara memeriksa eksekusi perintah yang berhasil dalam skrip shell

$? adalah kode pengembalian (kode status) dari perintah atau skrip terakhir yang dieksekusi. 0 ==sukses, angka lain berarti gagal

7. Pernyataan bersyarat seperti if/else dalam skrip shell

Sebagian besar bahasa pemrograman dan skrip memiliki semacam ekspresi if/else dan begitu juga skrip shell. Tabel berikut menunjukkan ekspresi berbeda yang diizinkan.

-eq sama dengan
-ne tidak sama dengan
-lt kurang dari
-le kurang dari atau sama dengan
-gt lebih besar dari
-ge lebih besar atau sama dengan

Catatan:Tidak seperti kebanyakan bahasa lain, spasi sangat penting saat menggunakan jika pernyataan dalam skrip shell.

Kode di bawah ini tidak memeriksa kode status dari perintah terakhir dan sukses bergerak lebih jauh untuk membuat kata sandi. Saat menyetel sandi berhasil, kami akan menempatkan pesan di terminal untuk menyelesaikan aktivitas dengan sukses.

# Create User Account
/usr/sbin/useradd -m ${USERNAME} 2>/dev/null
if [ $? -eq "0" ]; then
        echo -e ${PASSWORD} | /usr/bin/passwd ${USERNAME} --stdin >/dev/null
        if [ $? -eq "0" ]; then
             echo "User ${USERNAME} created sucessfully"
        fi
fi

Skrip Lengkap :Tautan unduhan

Lihat artikel menarik kami lainnya di LINUX :

Pintasan keyboard cepat shell bash – Tips Linux

8 Perintah Linux lucu – Anda akan menyukainya!

Praktik terbaik saat menjalankan perintah rm -rf di linux

Perintah Administrator Sistem Linux

Bagaimana cara menambahkan bilah kemajuan untuk menyalin dan memindahkan perintah di Linux?

Cara Menyinkronkan Waktu Server Linux dengan Server Waktu Jaringan

Cara mengkonfigurasi yum untuk menggunakan repositori CentOS di mesin RHEL

Alat Terbaik Untuk Memulihkan Data [Windows, Linux, DOS, MAC OS X]


Linux
  1. Tentukan Shell In Script Selama Runtime?

  2. Waktu Habis Dalam Skrip Shell?

  3. Apakah Anda Membutuhkan Shell Untuk Scp?

  1. Proses Dalam Sesi Dalam Shell Interaktif Vs Dalam Skrip?

  2. Bagaimana Anda menjalankan skrip saat login di * nix?

  3. Menjalankan skrip shell secara paralel

  1. Mengapa Anda perlu meletakkan #!/bin/bash di awal file skrip?

  2. Skrip transliterasi untuk shell linux

  3. Bisakah file .sh menjadi malware?