Задать вопрос
  • Как запустить два SSH туннеля из одного bat файла и убрать предупреждение о rdp сертификатах?

    @res2001
    winser,
    А сертификатами для rdp что делать

    Сертификаты можно предварительно установить пользователю в систему. Сделайте их доступными для скачивания и дайте пользователю URLы и инструкцию по установке.
    В винде есть утилита командной строки certutil, которую можно использовать для "автоматической" установки сертификата. Но сертификат все равно нужно сначала скачать (или предоставить вместе с батником). Не уверен, что certutil доступна во всех версиях винды, надо проверять. По аргументам то же не подскажу, гуглите (certutil /?).
    Сертификат может быть не один, если используется цепочка сертификатов, то надо предоставить все сертификаты в цепочке, вплоть до корневого центра сертификации. В этом случае устанавливать сертификаты надо в разные контейнеры.
    И кстати certutil можно не вызывать каждый раз при старте mstsс, установить сертификаты достаточно один раз. Собственно так же как и cmdkey - она сохраняет учетные данные во встроенное хранилище винды и дальше можно уже не вызывать cmdkey.

    /noConsentPrompt - это не о том (mstsc /?).
  • Как запустить два SSH туннеля из одного bat файла и убрать предупреждение о rdp сертификатах?

    @res2001
    winser, В команде start первый параметр - название окна, запускаемой программы.
    Используйте ее так:
    start "" ssh ...
    Но у вас не одна команда ssh, а конвейер, так что start нужно добавлять к каждой команде конвейера (к cmdkey, не нужно - она выполняется быстро). На самом деле конвейер тут то же не нужен, просто запишите все команды последовательно, так проще:
    start "SSH1" ssh -L 9088:192.168.0.89:3389 user1@192.168.0.89
    cmdkey /generic:termsrv/127.0.0.1 /user:user1 /pass:123456
    start "" mstsc /v:127.0.0.1:9088
    ...


    UPD: Хотя заголовок - не обязательный параметр start, так что это можно пропустить. Но про конвейер все верно написал.
  • Какие ограничения/возможности функции main?

    @res2001
    Deita, Вы как-то все пытаетесь усложнить. На самом деле все проще. Воспринимайте код буквально. Не нужно строить догадок. Для простоты пока считайте, что все что написано в исходном коде именно так и исполняется. Есть некоторые "тонкие" не явные моменты, но ваш вопрос не об этом.

    Изменяет содержимое переменной только оператор присваивания, если его нет (х+2) - содержимое переменной (х) не меняется.
    Переменные аргументы функции в этом плане немного отличаются от обычных переменных. Первичная инициализация аргументов происходит параметром, заданным при вызове функции. При этом явного оператора присваивания нет.
  • Корректно ли в C++ называть стек статической памятью?

    @res2001
    В программе может быть несколько потоков, у каждого потока свой стек. При старте программы стартует только один главный поток, память для него выделяется загрузчиком ОС. Память для стеков других потоков выделяется при создании соответствующего потока уже во время выполнения программы.

    https://en.cppreference.com/w/cpp/language/storage...
    Поскольку на стеке хранятся переменные с автоматической длительностью хранения, то стек стоит считать автоматической памятью. Но это немного другой взгляд на сегменты памяти.

    Подобная терминология может вводить в заблуждение. И стек и .bss и .data и .rodata и даже .text могут физически находится на одной и той же плашке (или микросхеме) памяти.

    Эти термины относятся к ЯП и к тому как компилятор работает с переменными (т.е. какие инструкции генерирует для доступа к переменным), размещенными в том или ином сегменте памяти.

    Тут главное что бы вы понимали как используется стек и другие сегменты памяти. Терминология может меняться в зависимости от того с какой стороны вы рассматриваете вопрос.
  • Что ещё нужно сделать тут?

    @res2001
    aryzhanki, У меня аналогично.
    Нажмите на ссылку ниже "Подробнее", там будет статья от микрософта на эту тему. Похоже требуется дополнительная настройка, чтоб это работало. Я пока не вникал.
    В статье указано, что применимо только для Windows Server. Это как-то смущает, у меня Вин11. Толи косяк у микрософта, то ли просто статью не обновили до Вин11.
  • Как правильно организовать таблицы?

    @res2001
    Михаил Смирнов, В общем случае это создает дополнительные проблемы и дополнительный код на вышестоящем уровне. С этим вы уже столкнулись, но еще, похоже, не успели окунуться в проблему сполна.
    Это может быть оправдано, только если за год в этой таблице накапливаются миллиарды записей и весят они под несколько десятков/сотен гигабайт. Тогда разные таблицы средствами СУБД можно разнести на разные физические диски. Но и тут есть другие технологии решения проблемы, ниже уже писали. Т.е. подобное усложнение структуры базы и кода можно применять с какой-то целью, а не просто так, потому что хочется. Само по себе это действие не может быть целью.
  • Как правильно организовать таблицы?

    @res2001
    Чем вызвана подобная организация таблиц?
    Что бы так делать, нужны очень веские причины, которые бы перевешивали все возникающие проблемы.
  • Хочу понимать биты/байты и их друзей. Литература?

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

    Возможно вам и не нужно вникать в биты. Все зависит от задачи, которую вы ставите перед собой. Из вопроса это не ясно.

    Вот с шестнадцатеричной системой счисления гораздо сложнее - там цифр 16, но правила те же. А еще кое-где применяют 36ричную систему, сам видел.
  • Почему при подключении по ssh с ключем требует пароль?

    @res2001
    winser, На ключ при генерации то же можно повесить пароль. Тогда пароль будет запрашиваться, но уже от ключа.
  • Как настроить VPN на удаленном рабочем столе при подключении через RDP?

    @res2001
    Возможно ТСу как раз и нужен режим default route. Так что сразу выключать не стоит, нужно разобраться в хотелках.
    Даниил Сидоров Поведение при подключении ВПН вполне адекватное при включенном режиме default route.
    Вам нужно понять для чего вам ВПН.
    Если вы планируете выходить через ВПН в интернет, то default route должен быть включен, но в этом случае вам придется смириться с отваливанием RDP соединения. Вновь подключиться к RDP вы сможете только через ВПН.
    Если выход в инет через ВПН не планируется, то необходимости в default route нет, настройку нужно выключить. Проблема с отваливанием RDP соединения отпадет.
  • Как создать массив из типов данных в си?

    @res2001
    Nulltiton, А почему не через _Generic?
    #define GET_TYPE_SIZE(type)    _Generic((type), char: 1, short: 2, int: 4, ...)
    main() {
       printf("%zu\n", GET_TYPE_SIZE(int));
       
    }

    Более универсальный вариант - в _Generic макросе возвращать индекс типа, а не размер. Массив размеров держать отдельно и использовать индекс, возвращаемый макросом, для доступа к нужному элементу.
  • Как сделать сервер маршрутизации?

    @res2001
    Александр Маджугин,
    Есть скрипты разные - это один из них был.

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

    По мимо поднятия NAT надо добавить маршрут на ноуте, я писал где-то выше. Без этого работать то же не будет. Стоит начать с маршрута, т.к. это можно легко сделать.

    Даже если все настроено правильно и должно работать, фаерволы могут блокировать трафик. Причем фаервол на любом промежуточном узле. Вам надо в iptables разрешить трафик между адерсами openvpn сети и адресами gitlab сети. И на вашем ноуте то же не помешает проверить фаервол.
  • Как сделать сервер маршрутизации?

    @res2001
    Александр Маджугин,
    я не знаю

    Не знаете - погуглите. NATов может быть несколько на одном компе, если у него несколько сетевых интерфейсов.
    NAT привязан к сетевому интерфейсу, поэтому я так и выражаюсь.
    Вот даже погуглил :) https://interface31.ru/tech_it/2021/07/osnovy-ipta...
    добавьте ключ -o и укажите интерфейс fortivps.
  • Как сделать сервер маршрутизации?

    @res2001
    Александр Маджугин, Openvpn сам NAT не поднимает. Возможно вы когда его настраивали добавили соответствующее правило.
    NAT вообще не имеет отношения к ВПН, его можно поднимать, можно не поднимать, зависит от потребностей.
    Во многих статьях в интернете по поднятию ВПН, NAT идет в комплекте, но это не значит что он нужен абсолютно в любых конфигурациях.
    тоже нет (((

    Что именно нет? Как вы тестируете?
  • Как сделать сервер маршрутизации?

    @res2001
    Александр Маджугин, К сожалению не силен в iptables, не подскажу как тут правильно поднять NAT.
    Но причем тут "внешний адрес сервера VPS"?
    Вы должны поднять NAT на интерфейсе foritvps, а там какой-то свой адрес используемый внутри fortivpn.
  • Как сделать сервер маршрутизации?

    @res2001
    Александр Маджугин, Раз без openvpn ваш VPS ходит к gitlab успешно, то как минимум нужный маршрут прописан.
    Но этого мало. Т.к. сеть за fortivps сервером ничего не знает о ваших адресах, то ответы будут где-то теряться. Вам нужно настроить NAT на интерфейсе fortivps, тогда в сеть gitlab вы будете попадать с адресом, полученным при подключении к fortivps.
    Когда вы ходите к gitlab без openvpn, то используется адрес интерфейса fortivps. Благодаря NAT можно получить тот же эффект и для удаленных компьютеров.
    И в конце надо добавить маршрут на вашем компе к сети gitlab через openvpn сервер. Это делается опцией push route в конфиге openvpn сервера.
  • Как перенести стандартные пути конфигурационных файлов NeoVim'а в корневую директорию?

    @res2001
    Пишут переменная окружения XDG_CONFIG_HOME указывает на каталог с конфигом: $XDG_CONFIG_HOME/nvim
    Правда это в линуксе.
    https://thevaluable.dev/vim-runtime-guide-example/
  • Как сделать сервер маршрутизации?

    @res2001
    Приведите схему сети, с указанием внутренних IP адресов, белые адреса можете как-нибудь "переименовать". И кратким описанием того что каждый узел должен делать. Схему можете хоть на бумажке от руки нарисовать и сфотографировать, главное чтоб понятно было.
    Вы тут требуете конкретики, какие маршруты прописывать. А сами никакой конкретики не даете. Распечатка ifconfig для одного какого-то хоста малоинформативна.
    Дополнительно можно привести конфиг openvpn сервера.
  • Как правильно компилировать на с++?

    @res2001
    Как все тут писали эта dll не часть MSVS, это часть микрософтовской реализации языков С/С++. Это libc.so и libstdc++.so если проводить аналогии с линуксом, в них содержатся, например реализации cin/cout и printf и вся стандартная библиотека.
    Программу с библиотеками можно линковать динамически (как сейчас), или статически. У каждого варианта есть плюсы и минусы. Вариант линковки задается опциями компилятора. При динамической линковке ты сам должен позаботится о том, что бы на компе, где будет исполняться твоя программа были все необходимые библиотеки. При статической линковке библиотеки содержатся в самом исполняемом файле, при этом твой "хело ворд" будет размером в несколько мегабайт.
    Микрософт свой рантайм распространяет в виде отдельного установщика, где-то в недрах MSVS должен лежать этот установщик или его можно скачать с сайта микрософт.
  • Перенос системы на другой ПК по сети?

    @res2001
    Практически любой софт, снимающий образ с диска умеет писать этот образ на сетевые диски.
    Сетевым диском может выступать, например, диск на винде куда вы будете впоследствии устанавливать этот образ. Но в этом случае это должен быть второй диск, т.к. первый будет использован при записи образа.