Repositori ini berisi kumpulan kecil skrip yang mungkin berguna bagi sysadmin. Saya menyusunnya sendiri untuk memusatkan alat-alat kecil yang menurut saya berguna, dan tampaknya ini populer.
Saya dulunya meminta agar alat-alat baru dimasukkan, namun perlahan-lahan saya menyadari bahwa "less is more". Saya menyukai gagasan sysadmin, pengembang, dan orang lain yang membangun perangkat mereka sendiri, namun saya juga menemukan bahwa orang-orang mengirimkan hal-hal yang saya tidak mengerti daya tariknya.
Masuk akal jika alat-alat pribadi bersifat sangat pribadi, tetapi itu berarti penolakan hampir selalu merupakan perilaku default dan itu membuat saya merasa tidak enak.
Daripada menambahkan sesuatu di sini, pertimbangkan repositori ini sebagai kumpulan kecil dari hal-hal yang saya gunakan, dan jika Anda ingin menggunakan sebagian/semua utilitas untuk digunakan sendiri, silakan lakukan. Jika belum, maka saya sangat menganjurkan Anda untuk mempertimbangkan alat apa yang akan membuat kehidupan sehari-hari Anda lebih berguna dan kemudian mengumpulkannya, mendokumentasikannya , dan mempublikasikannya sendiri.
Singkatnya, nilai di sini adalah gagasan untuk mengumpulkan utilitas paling umum dan membuatnya mudah dipasang dan diperbarui dari satu sumber pusat. Bukan alat spesifik itu sendiri.
Terdapat repositori pengganti yang masih terbuka, dan penambahan baru mana yang dapat dilakukan dengan lebih leluasa:
Tunjukkan berapa lama file/direktori dimodifikasi agar dapat dibaca manusia.
Contoh:
$ ./ago /etc/passwd
/etc/passwd 15 weeks ago
Alternatif:
stat
dan ls
keduanya menunjukkan usia, tetapi tidak dapat dibaca manusia. Jalankan perintah, sembunyikan STDOUT dan STDERR jika berhasil diselesaikan.
Contoh:
./chronic cp /etc/passwd /tmp/not/found
Ini dirancang untuk digunakan pada cron-job, yang outputnya biasanya diabaikan jika berhasil.
Ini ditulis oleh Joey Hess dan merupakan bagian dari moreutils.
Mengingat sekumpulan rentang CIDR, keluaran IP individual dalam rentang tersebut.
Contoh:
$ ./cidr2ip 192.168.0.0/24
192.168.0.0
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
..
Hapus spasi asing dari baris, dan hapus baris kosong seluruhnya.
Contoh:
$ echo -e "Test1n f nnTest2nnnn" | ./collapse
Test1
f
Test2
Alternatif:
tr
Laporkan file duplikat, melalui hash SHA1 dari konten, secara rekursif.
Contoh:
$ dupes
./.git/logs/HEAD
./.git/logs/refs/heads/master
./.git/refs/heads/master
./.git/refs/remotes/origin/master
Alternatif:
Tunjukkan, melalui kode pengembalian, apakah direktori tertentu kosong atau tidak.
Contoh:
if empty-dir /etc; then echo "We're broken" ; fi
Perluas alamat IPv6 yang disingkat/dikompresi ke bentuk lengkap.
Contoh:
./expand-ipv6 fe80::1 2001:41c8:10b:103::111
fe80:0000:0000:0000:0000:0000:0001
2001:41c8:010b:0103:0000:0000:0111
Alternatif:
sipcalc
Skrip sederhana untuk mengirimkan serangkaian metrik & nilai yang konsisten ke instance grafit jarak jauh.
Metrik dapat diperluas melalui "plugin" kecil, yang tidak lebih dari skrip Shell/Perl/Ruby/python di direktori tertentu.
Contoh:
graphite_send -v
CATATAN Beberapa metrik hanya akan dikirim jika pengguna yang dipanggil adalah root.
Alternatif
Dapatkan alamat IP dengan mudah, baik semua IP, semua IPv4/IPv6, atau untuk perangkat. Dirancang terutama untuk pembuatan skrip.
Contoh:
$ ./ips -4
lo 127.0.0.1
eth0 80.68.84.102
eth0 80.68.84.104
Atau untuk melihat semua alamat IPv6 di eth0:
$ ipaddr -6 -d eth0
eth0 2001:41c8:10b:102::10
eth0 fe80::216:3eff:fe08:16a4
CATATAN Memerlukan kompilasi melalui make build
.
Alternatif:
ip -[46] addr show
ifconfig -a
Mirip dengan true
dan false
perintah maybe
keluar dengan kode status nol atau satu, bergantung pada nomor acak.
Ini bisa berguna dalam skrip yang perlu menguji kegagalan, atau yang mendapat manfaat dari keacakan:
Contoh:
maybe && echo "I pass"
maybe || echo "I fail"
Ping sebuah host, terlepas dari apakah itu host IPv6 atau IPv4.
Contoh:
$ multi-ping steve.org.uk
Host steve.org.uk - 80.68.85.46 alive
Host steve.org.uk - 2001:41c8:125:46:0:0:0:10 alive
Untuk memudahkan Anda juga dapat menentukan URI sebagai argumen, misalnya:
$ multi-ping http://steve.org.uk/foo/bar
Host steve.org.uk - 80.68.85.46 alive
Host steve.org.uk - 2001:41c8:125:46:0:0:0:10 alive
Persyaratan:
Net::DNS
.ping
+ ping6
. Jika host saat ini adalah budak MySQL, skrip ini akan menguji apakah replikasi budak masih berfungsi.
Replikasi dianggap OK jika tiga kondisi berikut ini terpenuhi:
Contoh:
# ./mysql-slave-check
The replication appears to show an error:
..
Master_Host: da-db1
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000124
Read_Master_Log_Pos: 65667
Relay_Log_File: relay-log.001139
Relay_Log_Pos: 27251
Relay_Master_Log_File: mysql-bin.000124
Slave_IO_Running: No
Slave_SQL_Running: No
..
Script keluar secara diam-diam jika semuanya baik-baik saja, kecuali Anda menambahkan " --verbose
":
# ./mysql-slave-check -v
The slave is running, successfully.
Replication lag: 0 seconds
Persyaratan:
Server HTTP Python sederhana, yang telah diperbarui untuk memungkinkannya mengikat ke alamat IP arbitrer, khususnya untuk memungkinkan Anda mengikat ke localhost.
Contoh:
$ ./pyhttpd 127.0.0.1:8080
Serving HTTP on 127.0.0.1 port 8080 ...
atau
$ ./pyhttpd 8080
Serving HTTP on 0.0.0.0 port 8080 ...
Hasilkan satu kata sandi acak melalui /dev/urandom
.
Contoh:
$ ./randpass
cT3j7Zp6
$ ./randpass -n 10
ulHrNvYLaa
$ ./randpass -n 20 -f
oe[d7+e.{Uw=L'RO~[]{
(Menambahkan "-f" menggunakan alfabet lengkap dari simbol yang mungkin, jika tidak, hanya nilai alfanumerik yang ditampilkan. "-n" mengatur panjang kata sandi yang dihasilkan.)
Alternatif yang ada:
Tampilkan keluaran baru sejak sebelumnya membaca file. Ini berguna untuk melacak pembaruan file log.
Contoh:
$ ./since /var/log/messages >/dev/null
$ logger "testing the log"
$ ./since /var/log/messages
Apr 20 11:24:37 precious skx: testing the log
Alternatif yang ada:
Tampilkan jenis autentikasi yang disajikan oleh server SSH jarak jauh.
Contoh:
$ ./ssh-auth-types precious
publickey password
$ ./ssh-auth-types ssh.example.com
publickey
Uji apakah koneksi ssh
ke daftar host akan berhasil, dengan menguji masing-masing host secara berurutan.
Contoh:
$ ./ssh-test host.list.txt
ssh.steve.org.uk ... OK
www.steve.org.uk ... OK
foo.example.com:222 ... OK
$ cat host.list.txt
ssh.steve.org.uk
www.steve.org.uk
foo.example.com:222
Format file masukan adalah:
[user@]hostname1[:port]
[user@]hostname2[:port]
..
Tidur dalam jangka waktu acak, dibatasi oleh nilai maksimal yang diberikan. (Defaultnya adalah 5 menit).
Contoh:
$ ./splay -v
Sleeping for 77 seconds from max splay-time of 300 seconds
$ ./splay -v -m 20
Sleeping for 7 seconds from max splay-time of 20 seconds
Alternatif yang ada:
Laporkan tanggal dan jumlah hari hingga masa berlaku sertifikat SSL yang diberikan habis. Beberapa nama domain dapat diterima dan masing-masing diuji secara bergantian.
Output defaultnya adalah "berisik", tetapi Anda dapat menambahkan "-d" untuk menyederhanakannya pada nama domain dan jumlah hari yang tersisa pada sertifikat.
Contoh:
./ssl-expiry-date bbc.co.uk
bbc.co.uk
Expires: Sep 18 13:50:57 2016 GMT
Days: 266
./ssl-expiry-date -d bbc.co.uk steve.org.uk
bbc.co.uk: 266
steve.org.uk: 82
Timeout memungkinkan Anda menjalankan perintah yang akan dimatikan setelah beberapa detik tertentu.
Contoh:
# Kill the command after 63 seconds.
./timeout -t 63 top
# Kill the command after two minutes, five seconds.
./timeout -t 2:5 top
# Kill the command after three hours, five minutes, and seven seconds
./timeout -t 3:5:7 top
Ulangi perintah tertentu hingga berhasil - selalu jalankan setidaknya sekali.
Contoh:
./until-success ssh example.com -l root -i ~/.ssh/example.com.key
Alternatif sepele (ba)sh:
Menunggu hingga host tertentu online, ditentukan oleh ping, hingga menjalankan perintah tertentu.
Contoh:
$ ./when-up 1.2.3.4 ssh [email protected]
Waiting for 1.2.3.4 to come online...
Last login: Sat Dec 28 23:25:01 2013 from 5.6.7.8
[email protected]:~#
Alternatif:
until-success ping -c 1 1.2.3.4; ssh [email protected]
Ulangi perintah tertentu sampai gagal - selalu jalankan setidaknya sekali.
Contoh:
./until-error ssh example.com -l root -i ~/.ssh/example.com.key
Alternatif sepele (ba)sh:
Menunggu hingga host tertentu down
Contoh:
$ ./when-down 1.2.3.4 echo "down"
Waiting for 1.2.3.4 to get down...
down
Alternatif:
until-error ping -c 1 -W 1 1.2.3.4; echo "down"
Identifikasi shell yang kita jalankan.
Misalnya:
$ which-shell
dash
Alternatif yang ada:
ls -l /bin/sh
Jalankan perintah, kecuali salinan perintah tersebut sudah berjalan, melalui pembuatan file kunci sementara.
Misalnya:
with-lock rsync ...
Nama lockfile didasarkan pada hash SHA1 dari perintah yang akan dieksekusi dan ID Pengguna saat ini.
Alternatif yang ada:
Silakan laporkan masalah/saran apa pun melalui repositori github:
Steve Kemp [email protected]