TGViewer
Channel Public Channel
Linux

Linux

@linux_sup

Новости и информация из мира Linux

По всем вопросам @evgenycarter
Subscribers
7.44K
Photos
578
Videos
37
Links
1.5K

Showing posts older than #1974 · Back to latest

Older Posts 20 shown
Post #1973 5.74K
Post #1972 4.68K
Быстрый совет по Linux

В терминале сочетание Alt + . – это небольшой, но очень мощный шорткат для повышения продуктивности. Оно вставляет последний аргумент предыдущей команды в текущую позицию курсора.

Идеально подходит для повторного использования длинных путей к файлам или имён файлов без необходимости набирать их заново. Если нажимать Alt + . несколько раз подряд, можно перебирать аргументы из более ранних команд в истории, двигаясь назад.

Это позволяет быстро и точно извлекать и переиспользовать ранее введённые данные, экономя время и снижая количество ошибок
  • 👍 35
  • ❤ 7
Post #1971 4.94K
Краткий совет по Linux

Хотите повторно использовать последний аргумент из предыдущей команды?

Используйте !$, это сэкономит время и нажатия клавиш.
  • 👍 24
  • 🔥 16
  • ❤ 4
Post #1970 4.84K
В чем разница между объявлением переменной export VAR="VALUE" и VAR="VALUE" в bash?

В bash (и других оболочках Unix) разница между командами export VAR="VALUE" и VAR="VALUE" связана с областью видимости переменной:

1. VAR="VALUE":
- Это обычное объявление переменной в текущей оболочке (сессии).
- Переменная VAR будет доступна только внутри текущей сессии, и не будет передаваться дочерним процессам, запущенным этой сессией.
- Например, если вы запустите новую команду или скрипт из текущей оболочки, VAR не будет доступна в этом дочернем процессе.

2. export VAR="VALUE":
- Команда export делает переменную VAR доступной для всех дочерних процессов текущей оболочки.
- То есть, VAR будет установлена и доступна не только в текущей сессии, но и во всех процессах, запущенных из этой сессии.
- Это полезно, когда необходимо передать значение переменной в другие программы или скрипты, запущенные из текущей оболочки.

Для примера


# Присвоение переменной без export
VAR="Hello"
bash -c 'echo $VAR' # Ничего не выведет, так как VAR не экспортирована

# Присвоение переменной с export
export VAR="Hello"
bash -c 'echo $VAR' # Выведет "Hello", так как VAR экспортирована


Таким образом, export используется для того, чтобы переменная была доступна в дочерних процессах, тогда как обычное присвоение без export ограничивает переменную только текущей сессией.
  • 👍 21
  • ❤ 6
  • 👎 2
Post #1969 4.16K
Совет дня по Linux

Расширение скобок {} — одна из самых недооценённых, но мощных возможностей оболочек Linux. Оно позволяет удобно и быстро генерировать произвольные строки или числовые последовательности без ручного ввода.

Чтобы использовать расширение скобок, укажите начало и конец последовательности внутри фигурных скобок {}, разделённых двумя точками .. . Например:

$ echo {1..5}
1 2 3 4 5

Это выведет числа от 1 до 5.

Также работает с буквами:

$ echo {a..e}
a b c d e


Примеры практического применения расширения скобок:

Создание файлов с последовательными именами:

$ touch report-{1..12}.txt

Использование диапазонов в циклах:

$ for i in {1..10}; do ...; done

Создание нескольких каталогов за один вызов:

$ mkdir backup-{1..4}

Перемещение группы файлов:

$ mv data-{1..5}.txt /path/to/destination/


В следующий раз, когда нужно вывести последовательность — не набирайте всё вручную. Используйте расширение скобок и сэкономьте время и усилия.
  • 👍 24
  • ❤ 4
  • 😁 2
Post #1968 3.17K

Forwarded from Системный Администратор Windows

👋 Привет, админы!

Если не ошибаюсь, осенью 21 года в одном из наших дата-центров после планового обновления клиентских машин начали массово падать сеансы RDP - пользователи жаловались, что после ввода пароля сессия сразу же разрывается. Оказалось, во время апдейта поставился неполностью совместимый патч безопасности, который конфликтовал с включённым на компьютерах аудиторией учетных политик.

🔥 Чтобы быстро отследить все последние установленные обновления на целевой группе машин и при необходимости откатить проблемный патч, я использовал вот такой PowerShell-скрипт:


# Получаем список компьютеров из текстового файла
$computers = Get-Content -Path "C:\Scripts\computers.txt"

# Словарь для хранения списка установленных обновлений
$updateReport = @()

foreach ($computer in $computers) {
try {
# Получаем установленные обновления за последние 7 дней
$recentUpdates = Get-HotFix -ComputerName $computer |
Where-Object { $_.InstalledOn -ge (Get-Date).AddDays(-7) }

foreach ($upd in $recentUpdates) {
$updateReport += [PSCustomObject]@{
Computer = $computer
KBArticle = $upd.HotFixID
InstalledOn = $upd.InstalledOn
}
}
}
catch {
Write-Warning "Не удалось получить обновления с сервера $computer: $_"
}
}

# Сохраняем отчёт в CSV
$csvPath = "C:\Scripts\RecentUpdatesReport.csv"
$updateReport | Export-Csv -Path $csvPath -NoTypeInformation -Encoding UTF8

Write-Host "Отчет сохранен в $csvPath"


С помощью этого отчёта мы быстро определили, что именно на всех проблемных ПК установился KB5005565. Чтобы откатить его удалённо, использовал команду:


Invoke-Command -ComputerName (Get-Content "C:\Scripts\computers.txt") -ScriptBlock {
wusa /uninstall /kb:5005565 /quiet /norestart
}


После перезапуска машин RDP-сессии вернулись в норму. Плюс я добавил правило на WSUS, чтобы этот конкретный патч не раздавался снова до выяснения причины конфликта.

👉 @win_sysadmin
  • 👍 13
  • 👎 4
  • 🔥 4
  • ❤ 2
Post #1967 3K
Совет дня по Linux

Редактирование файлов прямо из less

Во время просмотра файла в пейджере less можно нажать клавишу v. Это откроет текущий файл в редакторе, который указан в переменной окружения EDITOR.

После сохранения изменений и выхода из редактора вы увидите обновлённый файл в less.
  • 👍 19
  • ❤ 2
  • 🔥 1
Post #1966 3.29K

Forwarded from Bash Советы

🔐 Как найти файлы с открытыми правами (777) - быстро и просто!

Иногда на сервере появляются файлы и каталоги с правами 777, что представляет угрозу безопасности. Найдём их одной командой:


find / -type f -perm 0777 2>/dev/null


📁 А если нужно проверить директории:


find / -type d -perm 0777 2>/dev/null


🔍 Пояснение:

/ - путь, где искать (можно заменить на /var, /home и т.д.)
-type f / -type d — искать только файлы или директории
-perm 0777 - права доступа
2>/dev/null - убираем лишние ошибки (например, от Permission denied)

💡 Лучше запускать от root для полной картины.

📲 Мы в MAX

👉@bash_srv
  • 👍 12
  • ❤ 1
  • 😁 1
Post #1965 3.21K
Схема архитектуры Linux
  • 🔥 10
  • 👍 6
Post #1964 3.77K
Шпаргалка по DNS-записям 🚀
  • 🔥 13
  • 👍 1
Post #1963 3.2K

Forwarded from Системный администратор

Подборка полезных скриптов для Mikrotik

Сгенерировать резервную копию и отправить её по электронной почте

Этот скрипт создаёт файл резервной копии и отправляет его на указанный адрес электронной почты. В теме письма содержится имя маршрутизатора, текущая дата и время.

Обратите внимание, что сервер SMTP должен быть настроен перед использованием этого скрипта. Смотрите настройки в разделе /tool e-mail.


/system backup save name=email_backup
/tool e-mail send file=email_backup.backup to="me@test.com" body="See attached file" \
subject="$[/system identity get name] $[/system clock get time] $[/system clock get date] Backup")

Файл резервной копии содержит конфиденциальную информацию, такую как пароли. Поэтому, чтобы получить доступ к созданным файлам резервной копии, у скрипта или планировщика должна быть политика "sensitive" (чувствительная).

Использование строки в качестве функции


:global printA [:parse ":local A; :put \$A;" ];
$printA


Проверка пропускной способности и добавление ограничений
Этот скрипт проверяет, не превышает ли загрузка на интерфейсе 512 кбит/с, если это так, то добавляется очередь для ограничения скорости до 256 кбит/с.


:foreach i in=[/interface find] do={
/interface monitor-traffic $i once do={
:if ($"received-bits-per-second" > 0 ) do={
:local tmpIP [/ip address get [/ip address find interface=$i] address] ;
# :log warning $tmpIP ;
:for j from=( [:len $tmpIP] - 1) to=0 do={
:if ( [:pick $tmpIP $j] = "/") do={
/queue simple add name=$i max-limit=256000/256000 dst-address=[:pick $tmpIP 0 $j] ;
}
}
}
}
}


Заблокировать доступ к определённым веб-сайтам
Этот скрипт полезен, если вы хотите заблокировать некоторые сайты, но не хотите использовать веб-прокси.

В этом примере проверяются записи "Rapidshare" и "youtube" в DNS-кэше, и IP-адреса добавляются в список адресов с именем "restricted". Прежде чем начать, необходимо настроить маршрутизатор для перехвата всех DNS-запросов.


/ip firewall nat
add action=redirect chain=dstnat comment=DNS dst-port=53 protocol=tcp to-ports=53
add action=redirect chain=dstnat dst-port=53 protocol=udp to-ports=53


и добавьте брандмауэр


/ip firewall filter
add chain=forward dst-address-list=restricted action=drop


Теперь мы можем написать сценарий и запланировать его выполнение, скажем, каждые 30 секунд.
Код сценария:


:foreach i in=[/ip dns cache find] do={
:local bNew "true";
:local cacheName [/ip dns cache all get $i name] ;
# :put $cacheName;

:if (([:find $cacheName "rapidshare"] >= 0) || ([:find $cacheName "youtube"] >= 0)) do={

:local tmpAddress [/ip dns cache get $i address] ;
# :put $tmpAddress;

# if address list is empty do not check
:if ( [/ip firewall address-list find list="restricted" ] = "") do={
:log info ("added entry: $[/ip dns cache get $i name] IP $tmpAddress");
/ip firewall address-list add address=$tmpAddress list=restricted comment=$cacheName;
} else={
:foreach j in=[/ip firewall address-list find list="restricted"] do={
:if ( [/ip firewall address-list get $j address] = $tmpAddress ) do={
:set bNew "false";
}
}
:if ( $bNew = "true" ) do={
:log info ("added entry: $[/ip dns cache get $i name] IP $tmpAddress");
/ip firewall address-list add address=$tmpAddress list=restricted comment=$cacheName;
}
}
}
}


📲 Мы в MAX

👉 @i_odmin
  • 👍 4
  • ❤ 3
  • 👎 1
  • 🔥 1
  • 😁 1
Post #1961 4.14K

Forwarded from Системный Администратор (админ)

Скриптик переустановки пароля пользователя MikroTik

# Скрипт смены пароля пользователя
# только для исполнения в терминале ROS
# by Sertik 09/06/2020

{
:global EnterString do={
:local cont 0; :local string ""
:while ($cont!=13) do={
:local key ([:terminal inkey])
:if ($key!=13) do={
:local char [[:parse "(\"\\$[:pick "0123456789ABCDEF" (($key >> 4) & 0xF)]$[:pick "0123456789ABCDEF" ($key & 0xF)]\")"]]
:set string ("$string"."$char")}
:set cont $key
}
:return $string}
;
:put "Please, enter Username:"
:local RegUser [$EnterString];
:put "";
:if ([:len [/user find disabled=no name=$RegUser]]!=0) do={:put "Ok, a user with this name was found"; :put "";
:put "Please, enter new password for this user:"
:local newPass [$EnterString];
[/user remove $RegUser];
[/user add name=$RegUser password=$newPass group=full];
:put "";
:put "The user has been re-created, the password has been changed";
:put ("New user`s password: "."$newPass");
:put "Don't forget to set up access restrictions based on ip addresses";
} else={:put ("User "."$RegUser "."not found"); :put "";
}
}

Скрипт интересен строкой преобразования кода символа из переменной $key, сграбленного с клавиатуры терминала, в сам символ.

:local char [[:parse "(\"\\$[:pick "0123456789ABCDEF" (($key >> 4) & 0xF)]$[:pick "0123456789ABCDEF" ($key & 0xF)]\")"]]

👉 @sysodminof
  • 👍 12
  • 😁 3
  • ❤ 1
  • 🤯 1
Post #1957 6.16K
Post #1956 5.75K
Как стать профессиональным системным администратором Linux
  • 🔥 27
  • 😁 21
  • 👍 4
  • ❤ 1
Post #1955 4.23K
Хотя в основном ядре Linux присутствовали различные элементы поддержки SoC Apple M1 и M2, а также поддержка различных компьютеров Mac, в ядре основной ветки разработки отсутствовали некоторые функции, например, графический драйвер ядра Apple GPU . На более фундаментальном уровне, готовящееся к выпуску ядро Linux 6.17 удовлетворит ещё одно низкоуровневое ожидание от компьютеров Mac на базе Apple Silicon в основном ядре: возможность перезагрузки системы.

https://www.phoronix.com/news/Linux-6.17-Apple-SMC
Phoronix Linux Will Finally Be Able To Reboot Apple M1/M2 Macs With The v6.17 Kernel While there have been various elements of the Apple M1 and M2 SoC support in the mainline Linux kernel along with support for various Macs, different features have been missing from the upstream kernel such as the Apple GPU kernel graphics driver as one big…
  • ❤ 2
  • 🥰 1
Post #1954 3.66K
Когда вы перезагружаетесь после оптимизации своего сервера Linux и теперь не можете подключиться к нему по SSH
  • 😁 36
  • 🔥 8
  • 👍 5
  • 😢 5
Post #1953 3.53K
Быстрый совет по Linux: 🐧

добавьте немного цвета ! Нажмите клавишу z во время выполнения команды top в терминале.
  • 👍 17
  • 🥰 1
  • 👏 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →