$ echo '{ "exitcode" : 0, "exited" : 1, "out-data" : "Filesystem Size Used Avail Use% Mounted on\nudev 2.3G 0 2.3G 0% /dev\ntmpfs 479M 672K 478M 1% /run\n/dev/mapper/pmg-root 28G 2.7G 24G 11% /\ntmpfs 2.4G 1.1M 2.4G 1% /dev/shm\ntmpfs 5.0M 0 5.0M 0% /run/lock\n" }' | jq -r '."out-data"' | column -t
Filesystem Size Used Avail Use% Mounted on
udev 2.3G 0 2.3G 0% /dev
tmpfs 479M 672K 478M 1% /run
/dev/mapper/pmg-root 28G 2.7G 24G 11% /
tmpfs 2.4G 1.1M 2.4G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
cat sites.json | jq -r '.sites[] | "\(.title)\tadmin\t\(.admin[])\n\(.title)\tfront\t\(.front[])"' | sort -u | fzf -m --delimiter "\t" --nth 1,2 | awk '{print $3}'
Пример, в /home/user лежат файлы test14 test12 test123 test1234. Необходимо чтобы скрипт проверил директорию, и в случае если в ней лежит только один файл test14 завершился успешно, а если в ней находятся файлы указанные выше, то прерывался.
случайный набор цифр после слова test
(( $(ls /home/user |grep -c ^test) > 1 )) && exit
Есть команда показывающая кол-во подключенных ЮСБ к серверу и их наименование
lsusb is a utility for displaying information about USB buses in the system and the devices connected to them.
RED='\033[0;31m'
GREEN='\033[0;32m'
NORMAL='\033[0m'
OK="${GREEN}OK${NORMAL}"
NO="${RED}NO${NORMAL}"
lsusb |awk -v ok="$OK" -v no="$NO" '{print $3" "$4" - "$7" "$8" "$9" "no}'
$ du -sb * |awk '{cmd="stat -c %z "$2" |cut -d\" \" -f1";cmd |getline z;close(cmd);print z" "$1}' |awk '{sum[$1]+=$2}END{for(i in sum)print i,sum[i]}' |sort |numfmt --to=iec --field 2 --padding=10
2022-01-21 13M
2022-11-02 17G
2022-12-13 4,7G
2023-01-15 388M
2023-03-06 1,6G
2023-04-01 1,6G
2023-04-03 2,2G
2023-04-04 13G
2023-04-11 7,6G
paste file1 file2
paste <(hostnamectl) <(hostnamectl)
hostnamectl |awk '{print $0";"}'
paste <(hostnamectl |awk '{print $0";"}') <(hostnamectl)
paste <(hostnamectl |awk '{print $0";"}') <(hostnamectl) | column -t -s';'
paste <(hostnamectl |awk '{print $0";"}') <(hostnamectl) | csview -H -d';'
paste <(hostnamectl) <(hostnamectl) | csview -H --tsv
Он как видно на 100049 байт.
Мне нужно записывать в него строки ew=`cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 76` до тех пор пока он не заполнится полностью.
#!/usr/bin/env bash
#вводные
FILE=file.txt
S=100049 # общий размер в байтах
s=76 # максимальное количество однобайтовых символов на строку
N=$[S/(s+1)]
n=$[S-N*(s+1)]
echo "Cтрок + хвост = $N + $n"
rm -rf $FILE
for (( i = 0; i < $N; i++ )); do
cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c $s >> $FILE
echo >> $FILE
done
cat /dev/urandom | tr -dc 'A-Za-z0-9' | head -c $n >> $FILE
echo "Файл записан"
echo "Размер файла $FILE = $(stat -c %s $FILE) байт"
echo "ОК" > {biosinfo,meminfo,cpuinfo}.result
#!/usr/bin/env bash
FILEPATH_BIOSINFO_RESULT="biosinfo.result"
FILEPATH_MEMINFO_RESULT="meminfo.result"
FILEPATH_CPUINFO_RESULT="cpuinfo.result"
BIOSINFO_RESULT=$(cat "$FILEPATH_BIOSINFO_RESULT")
MEMINFO_RESULT=$(cat "$FILEPATH_MEMINFO_RESULT")
CPUINFO_RESULT=$(cat "$FILEPATH_CPUINFO_RESULT")
TABLE="TEST;RESULTS
BIOS ver;$BIOSINFO_RESULT
Memory;$MEMINFO_RESULT
CPU;$CPUINFO_RESULT"
echo "$TABLE" | csview -d";"
┌──────────┬─────────┐
│ TEST │ RESULTS │
├──────────┼─────────┤
│ BIOS ver │ ОК │
│ Memory │ ОК │
│ CPU │ ОК │
└──────────┴─────────┘
Единственное ли решение запускать bash скрипт через n количество времени, который пингует гугл и в зависимости от результата совершает действие?
fping -r1 -q 8.8.8.8 && echo OK || echo NO
$ fping -e -r 1 -a -q 1.1.1.1 8.8.8.8 77.88.8.8 208.67.220.220
1.1.1.1 (1.31 ms)
8.8.8.8 (14.3 ms)
208.67.220.220 (16.9 ms)
77.88.8.8 (51.5 ms)
fping -r1 -q 1.1.1.1 8.8.8.8 77.88.8.8 208.67.220.220 && echo OK || echo NO
ps -ef |grep '^user1' |tr -s ' ' |cut -d ' ' -f 8- |grep -v user1
ps -eo user,cmd |grep '^user1' |tr -s ' ' |cut -d ' ' -f 2- |grep -v user1
tr -s ' '
которая сокращает последовательность пробельных символов до одного пробела, а вдруг кто-то в имени додумается использовать больше одного пробела идущего в подряд или даже табуляцию ? хотя это визуально может и не важно, но всё жеps -eo user,cmd |grep '^user1' |cut -d ' ' -f 2- |sed 's/^[ \t]*//' |grep -v user1