# Запрашиваем новый порт для SSH
echo "Введите новый порт для SSH"
read newport
sed -i "s/#Port 22/Port $newport/I" /etc/ssh/sshd_config
systemctl restart sshd.service
echo "Порт изменен на $newport"
#!/bin/bash
# Функция для изменения порта SSH
change_ssh_port() {
local newport=$1 # Принимаем новый порт как аргумент функции
# Проверяем, что порт является числом и находится в допустимом диапазоне
if ! [[ "$newport" =~ ^[0-9]+$ ]] || [ "$newport" -lt 1 ] || [ "$newport" -gt 65535 ]; then
echo "Ошибка: Порт должен быть числом от 1 до 65535."
return 1
fi
# Заменяем строку с комментарием на новый порт в конфигурационном файле SSH
sed -i "s/#Port 22/Port $newport/I" /etc/ssh/sshd_config
# Проверяем, что конфигурация SSH корректна
if sshd -t; then
# Перезапускаем службу SSH для применения изменений
systemctl restart sshd.service
echo "Порт изменен на $newport"
else
echo "Ошибка: Конфигурация SSH некорректна. Изменения не применены."
return 1
fi
}
echo "Введите новый порт для SSH:"
read newport # Читаем новый порт от пользователя
# Вызываем функцию с введенным номером порта
change_ssh_port "$newport"
#!/bin/sh
# Создаём резервную копию
cp /etc/login.conf /etc/login.conf.bak
ed
# Используем ed для редактирования файла
ed /etc/login.conf <<EOF
/^\s*default:/
a
\t:charset=UTF-8:
\t:lang=ru_RU.UTF-8:
.
w
q
EOF
#!/bin/sh
# Создаём резервную копию
cp /etc/login.conf /etc/login.conf.bak
# Используем awk для редактирования
awk '/^default:/{print; print "\t:charset=UTF-8:\n\t:lang=ru_RU.UTF-8:"; next} 1' /etc/login.conf > /tmp/login.conf && mv /tmp/login.conf /etc/login.conf
for
head -c7
ну или через cat 11.txt |egrep -o .{7}
Чаще всего вложенные циклы используют для обработки файлов. Так, внешний цикл занимается перебором строк файла, а внутренний уже работает с каждой строкой. Вот, например, как выглядит обработка файла /etc/passwd:
#!/bin/bash IFS=$'\n' for entry in $(cat /etc/passwd) do echo "Values in $entry –" IFS=: for value in $entry do echo " $value" done done
echo -E "const std::map<unsigned int, std::string> nameMap = {"; cat /tmp/111.txt | egrep IDS | sed -e 's/\(IDS_STRING[0-9]\{1,\}\)[ ]\{1,\}\(.*\)/\{\1\, \2\},/gp'; echo "};"
Вводный файлroot@Bonus:/tmp# cat 111.txt STRINGTABLE BEGIN IDS_STRING101 "Example string 1" IDS_STRING102 "_Example string 3.14" END STRINGTABLE BEGIN IDS_STRING103 "Example string 3" IDS_STRING104 "_Example string 4" END
Выводroot@Bonus:/tmp# echo -E "const std::map<unsigned int, std::string> nameMap = {"; cat /tmp/111.txt | egrep IDS | sed -e 's/\(IDS_STRING[0-9]\{1,\}\)[ ]\{1,\}\(.*\)/\{\1\, \2\},/gp'; echo const std::map<unsigned int, std::string> nameMap = { {IDS_STRING101, "Example string 1"}, {IDS_STRING101, "Example string 1"}, {IDS_STRING102, "_Example string 3.14"}, {IDS_STRING102, "_Example string 3.14"}, {IDS_STRING103, "Example string 3"}, {IDS_STRING103, "Example string 3"}, {IDS_STRING104, "_Example string 4"}, {IDS_STRING104, "_Example string 4"}, }; root@Bonus:/tmp#
"
\1
это $1 в синтаксисе седа ;) ну и двойка соответственно $2 find . -regex ".*\.\(php\|js\|css\)" -exec sed -i 's/\/bitrix\/templates\//\/local\/templates\//g' "{}" \;
find .
искать от текущего каталога и ниже-regex ".*\.\(php\|js\|css\)"
- можно удалить, тут думаю сам поймешь для чего это -exec
- выполнить команду с найденым/sed -i 's/было/стало/g;
потоковый редактор бро это сила.{}
- подставить вывод find - то есть собственно сам список файлов.\;
- закрываем экранирем sed -i 's/\x24config\[\x27product_name\x27\] = \x27true\x27\x3B/\x24config\[\x27product_name\x27\] = \x27false\x27\x3B/' /etc/lalala/lala.conf
ssh [User_Name]@[Rremote_Host_Name or IP] [Command or Script]
cut -d '>' -f3 111.txt | sed 's/<\/td//g'
1 переменнаяcut -d '>' -f5 111.txt | sed 's/<\/td//g'
2 переменная's/include \$_SERVER\[\x27DOCUMENT_ROOT\x27\]\.\x27\/file\.php\x27\;/111111111/'g
cat 11.txt | cut -d \" -f 6
возможно вам подойдет именно такой вариант."
<input type=\\x22hidden\\x22 name=\\x22csrf.sign\\x22 value=\\x22c9e19b1287aca01ed1d65ebecd26706245aa4be31ff5d03fa36bc5633b45aad4b045ff421c25df734878cbaec6d8bfea28221c3377439f20ff1ec4d735e1c1a1\\x22\/><input type=\\x22hidden\\x22 name=\\x22csrf.ts\\x22 value=\\x221556511260444\\x22\/><\/form
find . -regex ".*\.\(php\|js\|css\)" -exec sed -i 's/\/bitrix\/templates\//\/local\/templates\//g' "{}" \;
#тут указываем совой домен
DOMAIN=mfwo.ru
EMAIL=vtaran@wildorchid.ru
#############################################################################################################
#ставим гит, если его нет
rpm -q git && echo "А гит уже стоит и мы его пропускаем" || yum install git
# в этой папке и будет лежать сам дистрибутивчик cetbot, он нам нужен будет потом для обновления ключиков.
cd /root
#проверяем не скачан ли он уже и качаем если нет.
test -d certbot && echo "Каталог уже есть, ниче не качаем" || git clone https://github.com/certbot/certbot
cd certbot
# Выставляем права на файл
chmod a+x ./certbot-auto || echo "проблема правами на файл" && echo "Права на файл поменяли успешно"
# проверяем верен ли путь до сайта, и не сгенерирован ли уже ключик, если все ок генерим!
test -d /home/bitrix/ext_www/$DOMAIN || echo "/home/bitrix/ext_www/$DOMAIN.ru -нет такой директории" && test -f /etc/letsencrypt/live/$DOMAIN/fullchain.pem && echo "А файл уже есть, не не генерируем новый !" ||
./certbot-auto certonly --webroot --agree-tos --email $EMAIL -w /home/bitrix/ext_www/$DOMAIN -d $DOMAIN -d www.$DOMAIN || echo "А не угадали с каталогом, проверяем пути" &&
# коментит "include bx/conf/ssl.conf/ssl.conf;" и добавляет строки
# ssl_certificate /etc/letsencrypt/live/$DOMAIN/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/$DOMAIN/privkey.pem;
# ssl on;
# keepalive_timeout 70;
# keepalive_requests 150;
# ssl_session_cache shared:SSL:10m;
# ssl_session_timeout 10m;
sed -i "s/ include bx\/conf\/ssl.conf\x3B/\ #include bx\/conf\/ssl.conf\x3B\n ssl_certificate \/etc\/letsencrypt\/live\/$DOMAIN\/fullchain\.pem\x3B\n ssl_certificate_key \/etc\/letsencrypt\/live\/$DOMAIN\/privkey\.pem\x3B\n ssl on\x3B\n keepalive_timeout 70\x3B\n keepalive_requests 150\x3B\n ssl_session_cache shared:SSL:10m\x3B\n ssl_session_timeout 10m\x3B/g" /etc/nginx/bx/site_avaliable/bx_ext_ssl_$DOMAIN.conf && echo "замена в конфигах прошал без ошибок"
# перед рестартом проверяем валидность конфигов, если ок рестартуем.
service nginx configtest && echo "Nginx валидно завершил проверку конфигов" && service nginx restart
#certbot-auto renew
#првоеряем нет ли записи в кроне и добавляем ее
echo "Записываем Автообновление сертификатов крон"
crontab -l | grep -q "\* \*/12 \* \* \* cd /root/certbot/ \&\& \./certbot-auto renew >> /dev/null 2>\&1 " && echo "А в кроне уже запись есть, ничего не добавляем" || echo "* */12 * * * cd /root/certbot/ && ./certbot-auto renew >> /dev/null 2>&1 " >> /var/spool/cron/root
echo "не забывайте про редиректы которые могут вести на http!!!!!!!!"