Админская фамилия

Make Sysadmins Great Again

Сила командной строки. Вводная.

Тру-админы знают, что все операции с компьютером можно произвести так, чтобы пользователь даже не знал о том, что с его компьютером что-то происходило. И даже иметь домен не обязательно. Для самых маленьких в этой статье я опишу наиболее часто используемые мной утилиты командной строки, а в будущем, возможно, буду обновлять этот пост.Для юных админов сразу хочется сделать мотивационный пинок: не бойтесь cmd! Это ваш лучший друг и соратник. Понимаю, что при первом запуске cmd вам очень страшно и бегут какие-то непонятные буквоцифры и Морфеуса нет рядом. К этому быстро привыкаешь, и потом уже паникуешь, когда cmd не свернут в панель задач. А чтобы прокачать скилы и убить страх - ставьте Linux без графической оболочки! А ещё можно запустить tracert ya.ru и с умным видом говорить начальнику, что тестируешь производительность сетевой подсистемы южного моста виртуального сервера баз данных, запущенного в облаке.Интерпретатор командной строки cmd запускается из меню Стандартные или набором волшебных трёх букв (угадайте каких!) в строке Выполнить. Откроется черное окошко с белым приглашением. Вся это красотень настраивается как душе угодно, но сейчас не об этом.Перейдем к командам. Про ping писать не буду - и так все знают. Скажу лишь, что при добавлении к команде символов /? можно узнать много нового.Команды для работы с сетьюipconfig /all - позволяет узнать сетевые настройки: MAC сетевушки, IP-адрес, адреса шлюза и DNS серверов.ipconfig /flushdns - очищает кэш DNS. При подозрениях на проблемы в работе DNS, первым делом запускайте эту команду.ipconfig /renew - обновляет настройки сетевого адаптера с DHCP-сервера.netstat - отображение статистики TCP/IP и текущих сетевых подключений. Имеет множество параметров.netstat -a - отображает все подключения и ожидающие порты.netstat -b - отображает процесс, ответственный за открытый портnetstat -p TCP - выводит данные только по TCP. То же самое есть по UDP и TCPv6, UDPv6.netstat -r - выводит таблицу маршрутизации.Я чаще всего пишу так netstat -an | findstr :80. Тут мы получаем список всех соединений с/на порт 80. И если они есть, следующим запросом можно уже поискать какая программа пытается соединиться netstat -anb.arp -a - отображение таблицы преобразования IP-адреса в MAC. Полезно, когда нужно узнать MAC удаленного компьютера по его IP или наоборот.nslookup - проверяет соответствие IP-адреса DNS-имени. Используется при определении неисправностей системы DNS.Ещё существует целый отдельный шелл для работы с сетью. Он так и зовется netsh (net shell). Его возможности огромны. Приведу лишь наиболее используемое.netsh winsock reset - сброс сокета. Т.е. мягкий сброс всех сетевых настроек. О более жестком сбросе здесь.netsh позволяет детально настроить сетевую конфигурацию или посмотреть определенные значения, даже недоступные в графическом интерфейсе. За более подробной информацией предлагаю обратиться к встроенной справке (netsh /?).Семейство утилит net позволяет подключать/отключать сетевые диски (net use), расшаривать ресурсы (net share), просматривать расшаренные ресурсы в сети (net view). Последняя команда помогает при непонятных проблемах с подключением к общим папкам - можно увидеть конкретную ошибку, которую не показывает GUI. Утилиты net позволяют работать не только с сетью, несмотря на название. Можно создать локального пользователя (net user username /add), добавить его в группу (net localgroup groupname username /add), запустить (net start servicename) или остановить (net stop servicename) службу. Предлагаю поближе познакомиться с этими утилитами и они окажут вам хорошую помощь. Ну а если будет время и желание, то я сам постараюсь подробнее расписать о них в следующих постах.Управление удаленным компьютеромМногие начинающие админы считают, что терминал это прошлый век и недооценивают его возможности, так как все нужные операции можно произвести из графического интерфейса. А знаете ли вы, что все эти операции можно произвести и на удаленном компьютере, причем абсолютно незаметно для пользователя и без применения средств удаленного администрирования вроде RAdmin и TeamViewer? Ведь зачем отрывать дорогого бухгалтера от расчета вашей зарплаты только для того, чтобы посмотреть запущена ли на его машина служба общего реестра? Можно ведь просто набрать в командной строке sc \buhpc query remoteregistry.Вообще утилита sc довольно мощная - с её помощью можно детально настраивать управление службами. И не только на удаленном компьютере.Для управления удаленной машиной я использую утилиты Sysinternals великого Марка Руссиновича. Чаще всего это PsExec. Она позволяет запустить командную строку или любой другой процесс на удаленной машине (psexec \remotepc cmd). А дальше делать с ней всё, что захочется. Для этого нам и нужна сила cmd.Управление принтерами - prnjobs. Сам ещё не юзал, но обязательно разберусь и отпишусь.Ну вот и назрела тема для нескольких следующих постов. Это sc, prn*, net, netsh, wmic и Sysinternals. Ждём продолжения!1, 2


Скрипт. Заливка файлов на FTP

Этот скрипт был написан для предотвращения нежелательных последствий от BSOD. Скрипт просматривает папку с дампами BSOD. Если дампы есть (синий экран был), то создаёт на FTP-сервере папку с датой создания дампа в качестве имени, а внутри неё папку с именем сбойной машины. И уже в эту папку копирует дампы. Затем переименовывает дампы в *.dmp.old, чтобы на следующий день их не копировать. Если скрипт запущен впервые, он копирует дампы как положено (каждый на свою дату).Краткое описание скрипта:Секция check. Проверяет, есть ли уже дампы. Если нет, скрипт заканчивает свою работу. Если да - переходит на следующую секцию.Секция makeftpcommand. Создаёт файл с именем script, в который пишет команды для работы с FTP.Секция makedirectory. Анализирует папку с дампами и записывает в script команду для создания папки на FTP-сервере с именем вида дата/имя_машины.Секция copyfiles. Заливает дамп в нужную папку.Секция rename. Переименовывает дамп в .dmp.old, чтобы при следующем запуске не копировать уже скопированные файлы.Оставшиеся строки закрывают файл script, выполняют его и удаляют.@echo on@echo =======================================@echo Copying memory dumps on FTP-server@echo =======================================@echo Script startedset $SRC="%systemroot%\minidump":check@echo Checking files@if exist $SRC*.dmp goto makeftpcommand:makeftpcommandset addr=scriptecho.open 127.0.0.1>> %ADDR%echo.anonymous>> %ADDR%echo.>> %ADDR%echo.binary>> %ADDR%:makedirectory@echo Making directoriesfor %%a in (%$SRC%) do (for /f “tokens=1” %%b in ("%%~ta") do (echo.mkdir %%~b%computername%>>%ADDR%)):copyfiles@echo Copying filesfor %%a in (%$SRC%) do (for /f “tokens=1” %%b in ("%%~ta") do (echo.cd %%~b%computername%>>%ADDR% && echo.send %%a >>%ADDR% && echo.cd ../..>>%ADDR%)):renamefor /f “tokens=1” %%a in (‘dir /b %$SRC%*.’) do ren %$SRC%%%a %%a.oldecho.bye>> %ADDR%ftp.exe -s:%ADDR% del /F /Q script