-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbash_library.sh
154 lines (134 loc) · 7.91 KB
/
bash_library.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#!/bin/bash
# ============================================================================
# Функция для проверки наличия файла
# ============================================================================
function check_file {
local file_path=$1
if [ -f "$file_path" ]; then
echo "File exists."
else
echo "File does not exist."
fi
}
# ============================================================================
# Функция для создания директории
# ============================================================================
# Функция для создания директории
function create_directory {
local directory_path=$1
if [ ! -d "$directory_path" ]; then
mkdir -p "$directory_path"
echo "Directory created."
else
echo "Directory already exists."
fi
}
# ============================================================================
# Функция для получения случайного числа в заданном диапазоне
# ============================================================================
function get_random_number {
local min=$1
local max=$2
local random_number=$((RANDOM % (max - min + 1) + min))
echo "Random number: $random_number"
}
# ============================================================================
# Функция для копирования файлов по пользователю
# ============================================================================
function copy_bash {
#Создать скрипт ownersort.sh, который в заданной папке копирует файлы в директории, названные по имени владельца каждого файла.
#Учтите, что файл должен принадлежать соответствующему владельцу.
cd /home && ls > /home/exampleWAY/filename # смотрю всех user через ls в home и передаю полученный результат в файл
users=/home/exampleWAY/filename # присваиваю файлу переменную для удабства использования
cd - # спускаюсь в начальную дирректорию где будет происходить процесс
total=$(cat $users | wc -l) # подсчитываю колличество user
counter=0
while [ $counter -lt $total ]; do # вывожу конкретную строку с именем user
let counter+=1 # щётчик
name=$(sed -n "$counter"p $users) # вывожу имя пользователя
finder=$(ls -l | grep $name | tr -s ' ' '\t' | cut -f '9 9') # выделяю файлы принадлежащие конкретному пользователю
cp ~/$finder ~/home/$name/ # записываю файлы в дирректорию конкретного пользователя
done
}
# ============================================================================
# Функция на подключение по списку ip адрессов заранее вложенных в txt файлу с дальнейшей проведением конфигурации, root passwd статичны
# ============================================================================
function ansible_bash {
USR=exampleUSERname # статичный user
PASSWD=exampleSTATICpassword # статичный пароль
IP=/home/yourdirectory/IPlist.txt #назначаю переменной адресс на каталог с ip адрессами
COUNTER=0 # создаю счётчик для будущего цикла
total=$(cat $IP | wc -l) # подсчитываю колличество строк с ip адрессами в переданному файле
while [ $COUNTER -lt $total ];do # запускаю цикл на колличество ip адрессов
let COUNTER+=1 # счётчик прибавляет по одному пока не станет равным колличеству ip адрессов
NAME_IP=$(sed -n "$COUNTER"p $IP) # присваиваю айпи адресс
sshpass -p $PASSWD ssh $USR@$NAME_IP 'mkdir forEXAMPLE;echo "hello;exit"' #как указанно в ковычках по примеру указать необходимые команды # подключаюсь по sshpass
done
}
# ============================================================================
# Функция для создания снифера
# ============================================================================
function sniffer {
UIP=$(ip a | grep eth | grep inet | awk '{print $2}' | rev | cut -c 4- | rev)
sudo echo -e '#!/bin/bash/\n\nsudo tcpdump -i any -nn src host '"$UIP"' or dst host '"$UIP"' > /tmp/sniffer.log' > /opt/sniffer.sh
sudo chmod 755 /opt/sniffer.sh
sudo echo -e '[Unit]\nDescription=Sniffer\n\n[Service]\nExecStart=/opt/sniffer.sh\n\n[Install]\nWantedBy=multi-user.target' > /etc/systemd/system/sniffer.service
sudo systemctl daemon-reload
sudo systemctl enable sniffer.service
}
# ============================================================================
# Простейший способ создания ключей для подключения к хосту по 22
# ============================================================================
ssh-keygen -t rsa # на локальной машине
ssh-copy-id [имя]@[адрес хоста] # передаём с локальной машины на хоста
ssh [имя]@[адрес хоста] # подключаемся
# ============================================================================
# Bash парсер результата выполнения python модуля с булевым возвращением
# ============================================================================
function check_result {
python_result=$(sudo python3 ypur_name.py)
if [ "$python_result" == "True" ]; then
return 0
else
return 1
fi
}
# ============================================================================
# Вспомогательная функция проверки установленных пакетов через pip
# ============================================================================
function is_pip_package_installed {
pip3 freeze | grep -q ^$1== >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "$1 Установлен."
else
echo "$1 Устанавливается"
sudo pip3 install $1
fi
}
#is_pip_package_installed pyinotify
# ============================================================================
# Вспомогательная функция проверки установленных пакетов apt
# ============================================================================
function install_if_not_installed {
command -v $1 > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "$1 Установлен."
else
echo "$1 Устанавливается"
sudo apt install $1 -y
fi
}
#install_if_not_installed python3-apt
# ============================================================================
# Простой способ считывай введённый параметр для дальнейших действий
# ============================================================================
#echo "Выберете режим:
# Режим начала тестирования - start
# Режим завершения тестирования - stop
#read choice
#
#case $choice in
# start) echo "Выбран - Режим начала тестирования" && bla bla bla;;
# stop) echo "Выбран - Режим завершения тестирования" && bla bla bla ;;
# *) echo "Неверный выбор." ;;
#esac