Кодовая страница консоли 65001 отличается от основной страницы windows 1251

Время на прочтение9 мин

Количество просмотров47K

Введение

Консольные приложения до сих пор остаются наиболее востребованным видом приложений, большинство разработчиков оттачивают архитектуру и бизнес-логику именно в консоли. При этом они нередко сталкиваются с проблемой локализации — русский текст, который вполне адекватно отражается в исходном файле, при выводе на консоль приобретает вид т.н. «кракозябр».

В целом, локализация консоли Windows при наличии соответствующего языкового пакета не представляется сложной. Тем не менее, полное и однозначное решение этой проблемы, в сущности, до сих пор не найдено. Причина этого, главным образом, кроется в самой природе консоли, которая, являясь компонентом системы, реализованным статическим классом System.Console, предоставляет свои методы приложению через системные программы-оболочки, такие как командная строка или командный процессор (cmd.exe), PowerShell, Terminal и другие.
По сути, консоль находится под двойным управлением — приложения и оболочки, что является потенциально конфликтной ситуацией, в первую очередь в части использования кодировок.

Данный материал не предлагает строгий алгоритм действий, а направлен на описание узловых проблем, с которыми неизбежно сталкивается разработчик локализованного консольного приложения, а также некоторые возможные пути их разрешения. Предполагается, что это позволит разработчику сформировать стратегию работы с локализованной консолью и эффективно реализовать существующие технические возможности, большая часть которых хорошо описана и здесь опущена.

Виды консолей

В общем случае функции консоли таковы:

  • управление операционной системой и системным окружением приложений на основе применения стандартных системных устройств ввода-вывода (экран и клавиатура), использования команд операционной системы и/или собственно консоли;

  • запуск приложений и обеспечение их доступа к стандартным потокам ввода-вывода системы, также с помощью стандартных системных устройств ввода-вывода.

Основная консоль Windows — командная строка или иначе командный процессор (CMD). Большие возможности предоставляют оболочки PowerShell (PS), Windows PowerShell (WPS) и Terminal. По умолчанию Windows устанавливает Windows Power Shell мажорной версией до 5, однако предлагает перейти на новую версию — 7-ку, имеющую принципиальное отличие (вероятно, начинающееся с 6-ки) — кроссплатформенность. Terminal — также отдельно уставливаемое приложение, по сути интегратор всех ранее установленных оболочек PowerShell и командной строки.

Отдельным видом консоли можно считать консоль отладки Visual Studio (CMD-D).

Конфликт кодировок

Полностью локализованная консоль в идеале должна поддерживать все мыслимые и немыслимые кодировки приложений, включая свои собственные команды и команды Windows, меняя «на лету» кодовые страницы потоков ввода и вывода. Задача нетривиальная, а иногда и невозможная — кодовые страницы DOS (CP437, CP866) плохо совмещаются с кодовыми страницами Windows и Unicode.

История кодировок здесь: О кодировках и кодовых страницах / Хабр (habr.com)

Исторически кодовой страницей Windows является CP1251 (Windows-1251, ANSI, Windows-Cyr), уверенно вытесняемая 8-битной кодировкой Юникода CP65001 (UTF-8, Unicode Transformation Format), в которой выполняется большинство современных приложений, особенно кроссплатформенных. Между тем, в целях совместимости с устаревшими файловыми системами, именно в консоли Windows сохраняет базовые кодировки DOS — CP437 (DOSLatinUS, OEM) и русифицированную CP866 (AltDOS, OEM).

Совет 1. Выполнять разработку текстовых файлов (программных кодов, текстовых данных и др.) исключительно в кодировке UTF-8. Мир любит Юникод, а кроссплатформенность без него вообще невозможна.

Совет 2. Периодически проверять кодировку, например в текстовом редакторе Notepad++. Visual Studio может сбивать кодировку, особенно при редактировании за пределами VS.

Поскольку в консоли постоянно происходит передача управления от приложений к собственно командному процессору и обратно, регулярно возникает «конфликт кодировок», наглядно иллюстрируемый таблица 1 и 2, сформированных следующим образом:

Были запущены три консоли — CMD, PS и WPS. В каждой консоли менялась кодовая страница с помощью команды CHCP, выполнялась команда Echo c двуязычной строкой в качестве параметра (табл. 1), а затем в консоли запускалось тестовое приложение, исходные файлы которого были созданы в кодировке UTF-8 (CP65001): первая строка формируется и направляется в поток главным модулем, вторая вызывается им же, формируется в подключаемой библиотеке классов и направляется в поток опять главным модулем, третья строка полностью формируется и направляется в поток подключаемой библиотекой.

Команды и код приложения под катом

команды консоли:

  • > Echo ffffff фффффф // в командной строке

  • PS> Echo ffffff фффффф // в PowerShell

  • PS> Echo ffffff ?????? // так выглядит та же команда в Windows PowerShell

код тестового приложения:

using System;
using ova.common.logging.LogConsole;
using Microsoft.Extensions.Logging;
using ova.common.logging.LogConsole.Colors;

namespace LoggingConsole.Test
{
    partial class Program
    {
        static void Main2(string[] args)
        {
            ColorLevels.ColorsDictionaryCreate();
            Console.WriteLine("Hello World! Привет, мир!");     //вывод строки приветствия на двух языках
            LogConsole.Write("Лог из стартового проекта", LogLevel.Information);
            Console.WriteLine($"8. Active codepage: input {Console.InputEncoding.CodePage}, output {Console.OutputEncoding.CodePage}");
            Console.ReadKey();
        } 
    }
}

Командную часть задания все консоли локализовали практически без сбоев во всех кодировках, за исключением: в WPS неверно отображена русскоязычная часть команды во всех кодировках.

Табл. 1. Результат выполнения команды консоли Echo ffffff фффффф

Вывод тестового приложения локализован лишь в 50% испытаний, как показано в табл.2.

Табл. 2. Результат запуска приложения LoggingConsole.Test

Табл. 2. Результат запуска приложения LoggingConsole.Test

Сoвет 3. Про PowerShell забываем раз и навсегда. Ну может не навсегда, а до следующей мажорной версии…

По умолчанию Windows устанавливает для консоли кодовые страницы DOS. Чаще всего CP437, иногда CP866. Актуальные версии командной строки cmd.exe способны локализовать приложения на основе русифицированной кодовой страницы 866, но не 437, отсюда и изначальный конфликт кодировок консоли и приложения. Поэтому

Совет 4. Перед запуском приложения необходимо проверить кодовую страницу консоли командой CHCP и ей же изменить кодировку на совместимую — 866, 1251, 65001.

Совет 5. Можно установить кодовую страницу консоли по умолчанию. Кратко: в разделе реестра \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor добавить или изменить значение параметра Autorun на: chcp <номер кодовой страницы>. Очень подробно здесь: Изменить кодовую страницу консоли Windows по умолчанию на UTF-8 (qastack.ru), оригинал на английском здесь: Change default code page of Windows console to UTF-8.

Проблемы консолей Visual Studio

В Visual Studio имеется возможность подключения консолей, по умолчанию подключены командная строка для разработчика и Windows PowerShell для разработчика. К достоинствам можно отнести возможности определения собственных параметров консоли, отдельных от общесистемных, а также запуск консоли непосредственно в директории разработки. В остальном — это обычные стандартные консоли Windows, включая, как показано ранее, установленную кодовую страницу по умолчанию.

Отдельной опцией Visual Studio является встроенная односеансная консоль отладки, которая перехватывает команду Visual Studio на запуск приложения, запускается сама, ожидает компиляцию приложения, запускает его и отдает ему управление. Таким образом, отладочная консоль в течение всего рабочего сеанса находится под управлением приложения и возможность использования команд Windows или самой консоли, включая команду CHCP, не предусмотрена. Более того, отладочная консоль не воспринимает кодовую страницу по умолчанию, определенную в реестре, и всегда запускается в кодировке 437 или 866.

Совет 6. Тестирование приложения целесообразно выполнять во внешних консолях, более дружелюбных к локализации.

Анализ проблем консолей был бы не полон без ответа на вопрос — можно ли запустить консольное приложение без консоли? Можно — любой файл «.exe» запустится двойным кликом, и даже откроется окно приложения. Однако консольное приложение, по крайней мере однопоточное, по двойному клику запустится, но консольный режим не поддержит — все консольные вводы-выводы будут проигнорированы, и приложение завершится

Локализация отладочной консоли Visual Studio

Отладочная консоль — наиболее востребованная консоль разработчика, гораздо более удобная, чем внешняя консоль, поэтому резонно приложить максимум усилий для ее локализации.

На самом деле, правильнее говорить о локализации приложения в консоли — это важное уточнение. Microsoft по этому поводу высказывается недвусмысленно: «Programs that you start after you assign a new code page use the new code page. However, programs (except Cmd.exe) that you started before assigning the new code page will continue to use the original code page». Иными словами, консоль можно локализовать когда угодно и как угодно, но приложение будет локализовано в момент стабилизации взаимодействия с консолью в соответствии с текущей локализацией консоли, и эта локализация сохранится до завершения работы приложения. В связи с этим возникает вопрос — в какой момент окончательно устанавливается связь консоли и приложения?

Важно! Приложение окончательно стабилизирует взаимодействие с консолью в момент начала ввода-вывода в консоль, благодаря чему и появляется возможность программного управления локализацией приложения в консоли — до первого оператора ввода-вывода.

Ниже приведен пример вывода тестового приложения в консоль, иллюстрирующий изложенное. Метод Write получает номера текущих страниц, устанавливает новые кодовые страницы вводного и выводного потоков, выполняет чтение с консоли и записывает выводную строку, содержащий русский текст, в том числе считанный с консоли, обратно в консоль. Операция повторяется несколько раз для всех основных кодовых страниц, упомянутых ранее.

F:\LoggingConsole.Test\bin\Release\net5.0>chcp
Active code page: 1251

F:\LoggingConsole.Test\bin\Release\net5.0>loggingconsole.test
Codepages: current 1251:1251, setted 437:437, ΓΓεΣΦ∞ 5 ±Φ∞ΓεδεΓ ∩ε-≡≤±±ΩΦ: Θ÷≤Ωσ=Θ÷≤Ωσ
Codepages: current 437:437, setted 65001:65001,  5  -: =
Codepages: current 65001:65001, setted 1252:1252, ââîäèì 5 ñèìâîëîâ ïî-ðóññêè: éöóêå=éöóêå
Codepages: current 1252:1252, setted 1251:1251, вводим 5 символов по-русски: йцуке=йцуке
Codepages: current 1251:1251, setted 866:866, ттюфшь 5 ёшьтюыют яю-Ёєёёъш: щЎєъх=щЎєъх
Codepages: current 866:866, setted 1251:1251, вводим 5 символов по-русски: йцуке=йцуке
Codepages: current 1251:1251, setted 1252:1252, ââîäèì 5 ñèìâîëîâ ïî-ðóññêè: éöóêå=éöóêå

F:\LoggingConsole.Test\bin\Release\net5.0>chcp
Active code page: 1252
  • приложение запущено в консоли с кодовыми страницами 1251 (строка 2);

  • приложение меняет кодовые страницы консоли (current, setted);

  • приложение остановлено в консоли с кодовыми страницами 1252 (строка 11, setted);

  • по окончании работы приложения изменения консоли сохраняются (строка 14 — Active codepage 1252);

  • Приложение адекватно локализовано только в случае совпадения текущих кодовых страниц консоли (setted 1251:1251) с начальными кодовыми страницами (строки 8 и 10).

Код тестового приложения под катом

using System;
using System.Runtime.InteropServices;

namespace LoggingConsole.Test
{
    partial class Program
    {
        [DllImport("kernel32.dll")] static extern uint GetConsoleCP();
        [DllImport("kernel32.dll")] static extern bool SetConsoleCP(uint pagenum);
        [DllImport("kernel32.dll")] static extern uint GetConsoleOutputCP();
        [DllImport("kernel32.dll")] static extern bool SetConsoleOutputCP(uint pagenum);
        
        static void Main(string[] args)
        {
            Write(437);
            Write(65001);
            Write(1252);
            Write(1251);
            Write(866);
            Write(1251);
            Write(1252);
         }

        static internal void Write(uint WantedIn, uint WantedOut)
        {
            uint CurrentIn = GetConsoleCP();
            uint CurrentOut = GetConsoleOutputCP();
            Console.Write($"current {CurrentIn}:{CurrentOut} - текущая кодировка, "); /*wanted {WantedIn}:{WantedOut},*/
            SetConsoleCP(WantedIn);
            SetConsoleOutputCP(WantedOut);
            Console.Write($"setted {GetConsoleCP()}:{GetConsoleOutputCP()} - новая кодировка, ");
            Console.Write($"вводим 3 символа по-русски: ");
            string str = "" + Console.ReadKey().KeyChar.ToString();
            str += Console.ReadKey().KeyChar.ToString();
            str += Console.ReadKey().KeyChar.ToString();
            Console.WriteLine($"={str}");
        }
      
        static internal void Write(uint ChangeTo)
        {
            Write(ChangeTo, ChangeTo);
        }
    }
}

Программное управление кодировками консоли — это единственный способ гарантированной адекватной локализацией приложения в консоли. Языки .Net такой возможности не предоставляют, однако предоставляют функции WinAPI: SetConsoleCP(uint numcp) и SetConsoleOutputCP(uint numcp), где numcp — номер кодовой страницы потоков ввода и вывода соответственно. Подробнее здесь: Console Functions — Windows Console | Microsoft Docs. Пример применения консольных функций WInAPI можно посмотреть в тестовом приложении под катом выше.

Совет 7. Обязательный и повторный! Функции SetConsoleCP должны размещаться в коде до первого оператора ввода-вывода в консоль.

Стратегия локализации приложения в консоли

  1. Удалить приложение PowerShell (если установлено), сохранив Windows PowerShell;

  2. Установить в качестве кодовую страницу консоли по умолчанию CP65001 (utf-8 Unicode) или CP1251 (Windows-1251-Cyr), см. совет 5;

  3. Разработку приложений выполнять в кодировке utf-8 Unicode;

  4. Контролировать кодировку файлов исходных кодов, текстовых файлов данных, например с помощью Notepad++;

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

Пример программной установки кодовой страницы и локализации приложения в консоли

using System;
using System.Runtime.InteropServices;

namespace LoggingConsole.Test
{
    partial class Program
    {
      	static void Main(string[] args)
        {
          	[DllImport("kernel32.dll")] static extern bool SetConsoleCP(uint pagenum);
        		[DllImport("kernel32.dll")] static extern bool SetConsoleOutputCP(uint pagenum);
            SetConsoleCP(65001);        //установка кодовой страницы utf-8 (Unicode) для вводного потока
            SetConsoleOutputCP(65001);  //установка кодовой страницы utf-8 (Unicode) для выводного потока
 
            Console.WriteLine($"Hello, World!");
        }
    }
}

Кракозябры в командной строке Windows


Добавил(а) microsin

  

Иногда по неизвестным причинам некоторые команды русскоязычной версии Windows выводят русский текст в нечитаемой кодировке, кракозябрами.

Например, команда help выводит нормальный текст:

cmd-normal-encoding-866

Но при этом подсказка telnet выводит в ответ кракозябры.

cmd-wrong-encoding-1251

Так может происходить, к примеру, если текущая кодировка консоли 866, а утилита telnet.exe почему-то выводит текст в кодировке 1251. Вывести текст в нужной кодировке поможет команда chcp, которая устанавливает нужную кодировку.

Вот так можно посмотреть текущую кодировку консоли:

c:\Documents and Settings\user>chcp
Текущая кодовая страница: 866
  
c:\Documents and Settings\user>

А вот так можно поменять кодировку на 1251, после чего вывод подсказки telnet будет отображаться нормально:

c:\Documents and Settings\user>chcp 1251
Текущая кодовая страница: 1251
  
c:\Documents and Settings\user>

cmd-normal-encoding-1251

К сожалению, заранее угадать, в какой кодировке выводится текст, невозможно, поэтому проще попробовать установить командой chcp разные кодировки, чтобы добиться правильного отображения русского текста. Обычно используются кодировки 866 (кодировка русского текста DOS), 1251 (кодировка русского текста Windows), 65001 (UTF-8).

[Шрифт cmd.exe]

Иногда кракозябры можно убрать, если выбрать в свойствах окна cmd.exe шрифт Lucida Console (по умолчанию там стоит «Точечные шрифты»).

[Ссылки]

1. Универсальный декодер — конвертер кириллицы.

Дополнение
( ещё одно )

Если всё же очень нужны полновесные Unicode-символы в консоли,
то однобайтная кодировка 1251 не спасает,
придётся в cmd-консоли переключаться в utf-8 ( chcp 65001 )

Но на выходе получается полная фигня( строчки рвутся и дублируются ). Скорее всего это Windows-bug, пока не исследовал.

маленькое теоретическое отступление:

в ядре Perl есть так называемые I/O Layers,
с помощью которых прозрачно осуществляется различные трансформации при вводе-выводе
( такие как перекодировка, добавление CRLF, шифровка-дешифровка итд )

эти слои для своих целей можно подключать, отключать, менять местами.

для манипуляции слоями могут использоваться операторы use, require, binmode, open.

уже имеющиеся внутри слои:
«unix» «perlio» «crlf» «mmap» «pending» «raw» «utf8«
некоторые из них «пустые» — например raw и utf8. пустые в том смысле, что они просто меняют местами слои на I/O стэке.

безусловно, можно добавлять и свои слои.

Итак, нашлось вот такое решение:

если определить слои в следующем порядке:

:unix :encoding(utf8) :crlf

то получается вполне удовлетворительный результат с выводом Unicode-символов;
(Консоль предварительно переключаем в 65001)

use utf8;

`chcp 65001`;

binmode STDOUT, «:unix:encoding(utf8):crlf»

print » «Тру-ля-ля, тру-ля-ля» ♂ ☆ ♀»;

# могут выскакивать квадратики вместо символов, это означает, что в truetype-шрифте Lucida Console он неопределён.

проверял на Windows XP SP3. на 7-ке и далее не проверял.

    msm.ru

    Нравится ресурс?

    Помоги проекту!


    Правила раздела FAQ в группе разделов С++.


    В консоли (под Windows) не отображаются русские символы
    , Что делать?

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,

      Чаще всего причина в том, что кодировка консоли и кодировка выводимой строки не совпадают (CP 866, также известная как DOS, для консоли и Windows-1251 для файла). Самое простое решение — записать файл в кодировке CP 866. В среде Visual Studio это делается с помощью опции меню «File -> Advanced Save Options…».


      ElcnU



      Сообщ.
      #2

      ,

        вариант программно с использованием средств языка

          #include <string>

          #include <iostream>

          std::string rus(std::string strIn)

          {

              std::string strOut=strIn;

              for(std::string::size_type i=0;i<strOut.length();++i)

              {

                  if(strOut[i]>=’А’&& strOut[i]<=’п’ )

                      strOut[i]-=64;

                  if(strOut[i]>=’р’&& strOut[i]<=’я’ )

                      strOut[i]-=16;

              }

              return strOut;

          }

          int main()

          {

              std::cout<<rus(«Текст»)<<std::endl;

          }

        ещё вариант с использованием WinApi

          LPCSTR Rus(LPCTSTR pszIn)

          {

              static char szBuffer[MAX_PATH];

              CharToOemBuff(pszIn, szBuffer, MAX_PATH);

              return szBuffer;

          }


        n0rd



        Сообщ.
        #3

        ,

            #include <iostream>

            #include <locale>

            #include <cstdio>

            int main()

            {

                setlocale(LC_ALL, «russian_russia.1251»);

                std::cout << «Тест» << std::endl;

                std::wcout << L»Тест юникода» << std::endl;

                printf(«Тест C\n»);

                return 0;

            }


          barazuk



          Сообщ.
          #4

          ,

            n0rd, а разве работает в ОСях ниже ХП?


            miksayer



            Сообщ.
            #5

            ,

              Цитата barazuk @

              n0rd, а разве работает в ОСях ниже ХП?

              почему не должно работать? Может разве что в 98-й работать не будет, т.к. там поддержки Юникода еще не было


              Dimka_PREsideNT



              Сообщ.
              #6

              ,

                Можно кодировку консоли изменить:

                  #include <iostream>

                  #include <windows.h>

                  int main()

                  {

                      SetConsoleOutputCP(1251);

                  //That’s all

                      return 0;

                  }


                Qraizer



                Сообщ.
                #7

                ,

                  Moderator

                  Рейтинг (т): 537

                  Тут видимо имелось в виду то, что поддержка локалей в C++ опирается на ОС API, а в ОСах до XPёвых времён возможна недостача кодовых страниц. Естественно, что C++ тут будет бессилен.

                  P.S. Впрочем, и сугубо Cшная setlocale() в некоторых реализациях может быть подвержена определённым ограничениям RTL. Например, при использовании STLPort совместно с VC она ведёт себя не так, как оригинальная MSная setlocale().

                  Сообщение отредактировано: Qraizer


                  n0rd



                  Сообщ.
                  #8

                  ,

                    Цитата barazuk @

                    n0rd, а разве работает в ОСях ниже ХП?

                    А надо? Windows 98 с поддержки микроосфтом снята, кто ей пользуется, тот сам себе злобный буратино.

                    Цитата miksayer @

                    Может разве что в 98-й работать не будет, т.к. там поддержки Юникода еще не было

                    В 95 (не OSR 2), с этим было туго, в 98 должно быть нормально, хотя я не проверял.


                    Eric-S



                    Сообщ.
                    #9

                    ,

                      А у меня не получаеться уговорить мою хрюшу на utf-16

                      Вот прямо в консольке вбиваю и получаю

                      Цитата

                      C:\>chcp 1200
                      Указана недопустимая кодовая страница

                      C:\>chcp 65001
                      Текущая кодовая страница: 65001

                      Как видите, utf-8 скушал. А на utf-16 материться.

                      коды смотрел здесь


                      Леголегс



                      Сообщ.
                      #10

                      ,

                        Full Member

                        Рейтинг (т): 21

                        Варианты

                        Цитата n0rd @

                          #include <iostream>

                          #include <locale>

                          #include <cstdio>

                          int main()

                          {

                              setlocale(LC_ALL, «russian_russia.1251»);

                              std::cout << «Тест» << std::endl;

                              std::wcout << L»Тест юникода» << std::endl;

                              printf(«Тест C\n»);

                              return 0;

                          }

                        и

                        Цитата Dimka_PREsideNT @

                          SetConsoleOutputCP(1251);

                        В C++Builder 6 не работают.


                        CheapTrick



                        Сообщ.
                        #11

                        ,

                          Кстати, ни один из вышеприведенных вариантов с установками локали у меня в Code::Blocks Так и не заработал. Зато функция rus, изменяющая код символа с win1251 на внутренню code::blocks работает прекрасно.


                          amk



                          Сообщ.
                          #12

                          ,

                            Функция rus (в подавляющем большинстве своих вариантов) как правило перестает работать, как только сталкивается с нетривиальными случаями.

                            Внутренняя Code::Blocks как правило совпадает с системной, то есть windows-1251.

                            Что заметил, в куче кодировок, которые знает Code::Blocks, нет ни одной OEM (8xx).

                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                            0 пользователей:

                            • Предыдущая тема
                            • C/C++ FAQ
                            • Следующая тема

                            [ Script execution time: 0,0423 ]   [ 15 queries used ]   [ Generated: 14.05.25, 17:44 GMT ]  

                            Powershell- иероглифы; Кодировка командной строки – иероглифы и кракозябры

                            Часто приходиться видеть ИЕРОГЛИФЫ и КРАКОЗЯБРЫ в консоли PowerShell или DOS-окна после выполнения кода? РЕШЕНИЕ ЕСТЬ!

                            Поменять кодировку можно с помощью команды:
                            chcp 1251

                            chcp в качестве параметра принимает номер кодовой страницы:
                            866    — установлена по умолчанию
                            1251    — Windows кодировка
                            65001    — UTF

                            Для изменения кодовой страницы в консоли по умолчанию рекомендую прочитать статью:
                            http://support.microsoft.com/kb/262283/ru

                            Популярные сообщения из этого блога

                            Как : Отключить/Включить Фаервол Iptables в CentOS/RHEL

                            Iptables  — это  фаервол , который по умолчанию встроен в большинство Linux дистрибутивов. Иногда возникает необходимость  остановить iptables  для устранения проблем связанных с сетью. Из этой статьи Вы узнаете как проверить текущий  статус фаервола iptables  и как  выключить  или  включить  его в  CentOS, RHEL (Red Hat Enterprise Linux), Fedora  и подобных дистрибутивах. Все команды должны выполняться с привилегиями пользователя  root . Проверка Состояния Iptables Firewall Узнать текущее состояние Iptables IPv4 Firewall Выполните следующую команду, чтобы проверить  состояние фаервола iptables для IPv4  протокола : # service iptables status Узнать текущее состояние Iptables IPv6 Firewall Выполните следующую команду, чтобы проверить  состояние фаервола iptables для IPv6  протокола : # service ip6tables status Отключить Iptables Firewall Используйте следующие команды для отк…

                            Как увидеть список выданных адресов в DHCP на Debian или CentOS.

                            В Debian: Информация о выданных адресах хранится в: dhcpd.leases внутри каталога /var/lib/dhcp/dhcpd.leases Открываем файл с помощью «cat» и смотрим, кто что получил. В CentOS: cd /var/lib/dhcpd cat dhcpd.leases OR TO EDIT nano dhcpd.leases

                            Понравилась статья? Поделить с друзьями:
                            0 0 голоса
                            Рейтинг статьи
                            Подписаться
                            Уведомить о
                            guest

                            0 комментариев
                            Старые
                            Новые Популярные
                            Межтекстовые Отзывы
                            Посмотреть все комментарии
                          • Как получить доступ к целевой папке в windows 11
                          • Кряк windows 7 kms
                          • Код ошибки 0хс004а074 на windows 10
                          • Wd ses device usb device driver windows 11
                          • Драйвер нвидиа для windows 10 1050