Самый простой способ, который я знаю (не требует root):
inxi -Dplxx
Выводит все диски, их серийные номера и любую дополнительную информацию. -p добавляет разделы. -l добавляет метки. -u добавляет UUID для разделов.
К тому же, это намного легче запомнить, хех.
Пример:
inxi -Dxx
Drives: HDD Total Size: 810.2GB (42.9% used)
ID-1: /dev/sdc model: ST3160827AS size: 160.0GB serial: 5MT2HMH6
ID-2: /dev/sdb model: WDC_WD3200JD size: 320.1GB serial: WD-WCAMR1302926
ID-3: /dev/sda model: ST380817AS size: 80.0GB serial: 4MR2EWBE
ID-4: /dev/sdd model: ST3250824AS size: 250.1GB serial: 9ND08GKX
Обратите внимание, что это отфильтровывает оптические приводы. Для просмотра оптических данных:
inxi -Dxxd
Drives: HDD Total Size: 810.2GB (42.9% used)
ID-1: /dev/sdc model: ST3160827AS size: 160.0GB serial: 5MT2HMH6
ID-2: /dev/sdb model: WDC_WD3200JD size: 320.1GB serial: WD-WCAMR1302926
ID-3: /dev/sda model: ST380817AS size: 80.0GB serial: 4MR2EWBE
ID-4: /dev/sdd model: ST3250824AS size: 250.1GB serial: 9ND08GKX
Optical-1: /dev/sr0 model: LITE-ON DVDRW SOHW-1693S
rev: KS09 dev-links: dvd,dvdrw
Features: speed: 48x multisession: yes
audio: yes dvd: yes rw: cd-r,cd-rw,dvd-r state: running
Optical-2: /dev/sr1 model: LITE-ON LTR-52327S rev: QS0C dev-links: cdrom,cdrw
Features: speed: 52x multisession: yes
audio: yes dvd: no rw: cd-r,cd-rw state: running
Обратите внимание, что в моей системе Debian lsblk ничего не показывает для серийных номеров, будь то root или пользователь. Вот почему inxi использует гораздо более надежный метод для получения этих данных.
lsblk --nodeps -o name,serial
NAME SERIAL
fd0
sda
sdb
sdc
sdd
sr0
sr1
lsblk --version
lsblk from util-linux 2.25.2
Как видите, lsblk считает, что оптический привод и дисковод для гибких дисков также являются дисками, что в некотором смысле так и есть, хотя на самом деле это не так, поскольку они не становятся дисками, пока диск не вставлен. И он ничего не показывает для серийного номера, он также, кстати, ничего не показывает для других значений, таких как label.Определенно ошибка, так как эти данные доступны системе, и inxi получает их напрямую.
Комментировать:
server=A2; sed -i "/^$server/ c#$server" file.txt
Чтобы раскомментировать:
server=A2; sed -i "/^#$server/ c$server" file.txt
#!/bin/bash
server="$1"
case $2 in
start)
sed -i "s/^#\($server\)\$/\1/" lserver.txt
;;
stop)
sed -i "s/^$server\$/#&/" lserver.txt
;;
esac
Сохраните как server_ctrl
, затем запустите chmod u+x server_ctrl
.
Использование:
./server_ctrl A2 start|stop
Попробуйте следующие функции:
function comment() {
local regex="${1:?}"
local file="${2:?}"
local comment_mark="${3:-#}"
sed -ri "s:^([ ]*)($regex):\\1$comment_mark\\2:" "$file"
}
function uncomment() {
local regex="${1:?}"
local file="${2:?}"
local comment_mark="${3:-#}"
sed -ri "s:^([ ]*)[$comment_mark]+[ ]?([ ]*$regex):\\1\\2:" "$file"
}
Использование:
comment REGEX FILE [COMMENT-MARK]
uncomment REGEX FILE [COMMENT-MARK]
COMMENT-MARK default value is #
Для вас, если вы:
comment A2 /path/to/lserver
I have done by below script and it worked fine too
Scriptname
#!/bin/bash
echo "enter the servername"
read s1
sed -i "/$s1/s/^/#/g" filename
sed -i "s/^#//g" filename