Задать вопрос
  • Как реализовать ввод данных в консоль пользователем, пока он не введет определенное слово?

    @res2001
    Дамир Валиахметов, Скиньте сюда что происходит при запуске программы. Чтоб было видно, что программа выдает, что вы вводите и т.п.
  • Как реализовать ввод данных в консоль пользователем, пока он не введет определенное слово?

    @res2001
    Дамир Валиахметов, while (Console.ReadLine() != stopWord);
    Внимательно прочитайте описание цикла и поймите чего вы хотите добиться этим условием.
  • Как реализовать ввод данных в консоль пользователем, пока он не введет определенное слово?

    @res2001
    Дамир Валиахметов, После ageDictionary.Add(name, age); можно добавить
    Console.WriteLine("Если хотите выйти введите exit: ");

    Тогда уже будет понятней
    В while должно быть сравнение на не равно.
  • Как реализовать ввод данных в консоль пользователем, пока он не введет определенное слово?

    @res2001
    Т.к. до этого циклы изучались только в рамках ввода чисел. А как работать с вводом в цикле не понимаю.

    С вводом работать одинаково, хоть в цикле, хоть не в цикле. Циклы и ввод - это разные действия, друг с другом никак не связанные, вы их связываете только алгоритмом вашей программы (т.е. порядком выполнения инструкций).

    В цикле читайте стандартный ввод и проверяйте, что там пользователь ввел. Если "exit", то завершаем программу, если что-то другое - очередная итерация цикла.
    На эту задачу хорошо ложиться цикл do {} while с постусловием.
  • Как написать скрипт на bat?

    @res2001
    IvanU7n, Да, тут есть. Думал установилось как часть OpenSSH сервера. Но возможно уже есть и по умолчанию, не проверял. Спасибо!
  • Как написать скрипт на bat?

    @res2001
    IvanU7n, Не нашел.
    У меня Вин11 с последними обновлениями.

    Правда scp у меня есть в разных видах - есть как часть OpenSSH, есть winscp, есть в WSL, в putty. Но "родной" виндовой утилиты нет, она бы, видимо, лежала в system32 - там ничего похожего нет.
  • Как написать скрипт на bat?

    @res2001
    Нафига вы понаставили этих $$$$$? - тут же не perl и не bash. Просто ваш код резанул по глазам, можете не обращать внимания :)

    В целом подход правильный. Сам когда-то делал подобные сценарии для ftp.
    Пробовал просто в командной строке ввести команду,

    Вот с этого на самом деле и надо начинать. Сделайте все руками в ком.строке ftp, когда в этом режиме все получится, просто те же команды сунете в батник. Пока не добьетесь правильной работы в ручном режиме, нет смысла автоматизировать - только усложните отладку. Сами команды ftp, что в ком.строке ftp, что в ftp сценарии одни и те же.
    В самом ftp скудная справка из которой сложно что-то понять. Более подробно по командам ftp смотрите тут: https://learn.microsoft.com/en-us/previous-version...

    Что у вас там за кракозябры появляются местами?
    Вывод ftp "Consider using PASV." видимо говорит о том, что ftp сервер работает в пассивном режиме, клиенту то же надо задать этот вариант работы.

    Вообще к слову, ftp старый и не удобный протокол. Лучше бы использовать что-то другое. Можно например scp попробовать, правда встроенной поддержки в винде нет, надо использовать что-то стороннее (putty например).
  • Почему собранный проект pyinstaller при вызове .bat не может выполнить команду start?

    @res2001
    В ключе /d команды start надо указывать "startup directory", т.е. текущий каталог, который будет выбран для запускаемой программы. У вас указан путь к исполняемому файлу.
    Если программа не зависит от текущего каталога, то ключ можно убрать вообще.

    При этом если заменить Popen на run, то всё работает,

    Вы уверены, что у вас вообще что-то выполняется?
    Т.к. вы запускаете батник, то видимо надо указывать параметр shell=true для popen, В Винде, в отличие от линукса, батники - это не исполняемые файлы, их умеет исполнять только cmd.exe. В линуксе ядро само способно запустить shell и в нем запустить скрипт (винда так не умеет).
    Кроме того смущает, что у вас же сразу после subprocess.Popen идет exit. Есть шанс, что до запуска второго процесса дело не доходит.

    Что бы понять что происходит на самом деле надо:
    1. Анализировать код возврата popen, обрабатывать его исключения
    2. Добавьте в конце батника команду pause, что бы окно сразу не закрывалось и вы смогли увидеть вывод команд. Того же самого можно добиться перенаправив потоки stdout и stderr батника в файл или с помощью popen.

    PS: Я не слишком силен в питоне, знаю его немного, пишу тут из-за тега cmd/bat.
  • Vcpkg: почему видит хедеры, но не видит cpp файлы?

    @res2001
    forIXsins, Обычно нет нужды использовать отладочные версии библиотек, разве что вы хотите отладить саму библиотеку. Так что как правило используют release сборку библиотек всегда.
    Вот тут сказано как устанавливать только release версиии: https://learn.microsoft.com/en-us/vcpkg/get_starte...
    Тут вроде бы дается рецепт как заставить vcpkg использовать нужный вариант библиотеки: https://learn.microsoft.com/en-us/vcpkg/users/buil...
  • Vcpkg: почему видит хедеры, но не видит cpp файлы?

    @res2001
    forIXsins,
    UPD2: Нашёл решение - поменял конфигурацию решения с Debug на Release и всё заработало

    Решение так себе, т.к. наверняка вам захочется в процессе разработки своего проекта использовать отладчик (даже если пока такой мысли не возникает). С release версией вы его использовать не сможете, а debug - у вас не собирается.
    Предполагаю, что надо просто установить debug версию библиотеки с помощью того же vcpkg. Как это сделать - смотрите в его документации.
    Впрочем должно быть и какое-то другое, более правильное, решение, т.к. ситуация когда используется библиотека в release сборке, а само приложение собрано в debug - вполне нормальная ситуация. Предполагаю, что просто надо задать в VS какие-то опции, чтоб она использовала сборки библиотек, те которые вам нужны, а не по собственному усмотрению. Какие именно опции задать, я не в курсе. Вероятно это рулится какими-то опциями/переменными VCPKG.
  • Vcpkg: почему видит хедеры, но не видит cpp файлы?

    @res2001
    Не скажу ничего про vcpkg, мало с ним знаком. Но сами принципы подключения библиотек общие, каким бы компилятором или пакетным менеджером вы не пользовались. Про них и напишу пару слов.

    vcpkg - это просто пакетный менеджер, он ничего "не видит", ему это до лампочки. Он просто устанавливает пакеты из репозитория по правилам описанным в самом пакете.
    "Видит" или "не видит" компилятор при сборке проекта. НО!
    Когда вы подключаете библиотеку, то cpp/с файлы библиотеки не нужны в принципе компилятору. Он использует уже скомпилированный код в lib/dll (a/so) файлах. Для правильной сборки вашего проекта компилятору нужны только файлы заголовков библиотеки, т.к. в них описаны сигнатуры экспортируемых функций для формирования правильного вызова. А само тело функции найдется в lib/dll файле.
    Если у вас не хватает какого-то символа из библиотеки (а остальные все на месте), то возможно несколько вариантов:
    1. используемая вами версия библиотеки старая (или наоборот новая) и этого символа в этой версии библиотеки в принципе нет - он появился только в более новой версии библиотеки (или он устарел и его удалили из новой версии библиотеки). Как правило узнать об этом можно из документации на библиотеку, ну или порывшись в исходниках.
    2. Этот символ вообще не из этой библиотеки и вам нужно подключить еще какую-то.

    Для полноты вопроса вам надо добавить текст ошибки, которые выдает компилятор, чтоб людям было понятней, на что конкретно он ругается.
  • Как реализовать VPN-соединение до удалённого сервера с установленным Vipnet?

    @res2001
    планировал подключаться к закрытым ресурсам через VPN по стандартному для Windows протоколу PPTP

    Уж лучше SSTP использовать, то же стандартный для винды.
    VPN Vipnet блокирует входящие пакеты

    Возможно в одном из двух ВПНов (или в обоих вместе) ВПН подключение является маршрутом по умолчанию.
    На сколько я понял вам доступ по ВПН нужен только к корпоративным ресурсам. Поэтому выключите галку "использовать как маршрут по умолчанию" (не помню точно как она называется, находится где-то в глубине настроек IPv4 ВПН соединения) и добавьте маршурты до корпоративных ресурсов вручную. Маршруты надо будет добавлять как на стороне клиента, так и на стороне промежуточного Windows Server 2022. С помощью команд powershell (Add-VpnConnectionRoute) можно добавить статические маршруты, которые будут добавляться в таблицу маршрутизации при подключении к ВПН.
    При такой настройке ходить в корп.сеть вы будете через ВПН, а в интернет будете попадать напрямую.
  • Какой гипервизор (на базе основной ОС, а не автономный) из популярных (VirtualBox, VMWare и др) больше подходит для бэкенд разработки и тестирования?

    @res2001
    tests12345, Похоже у вас каша в голове. У снапшотов достаточно узкое предназначение, не нужно их натягивать на темы куда они не натягиваются (2, 3). К тому же снапшоты удовольствие не бесплатное - платите и дисковым пространством хоста и некоторым замедлением дисковых операций в ВМ. Особенно когда у вас будут "ветки снапшотов" для одной ВМ.

    Из виртуализации использую на винде в основном WSL для большинства задач. Но иногда подключаю VirtualBox - мне регулярно бывает необходимо установить специфические сборки линукса, в WSL это проблематично. В целом WSL удобна в том плане, что у тебя винда и линукс в одном флаконе, практически "бесшовно". Да, есть еще некоторые вопросы с интеграцией, но это мелочи. Очень не плохо микрософту удалась интеграция VSCODE + WSl. Да и GUIевые линуксовые приложения теперь запускаются в винде почти как родные.
    На линуксе - VirtualBox.
    В принципе VirtualBox хватает, виртуалками, кстати, можно управлять из питона - в установочный пакет входят модули для питона. Бывает полезно.
  • Как из одного приложения запустить другое?

    @res2001
    Only4You, Вот сейчас нагуглилась инструкция от микрософт по настройке удаленного WMI подключения:
    https://learn.microsoft.com/ru-ru/windows/win32/wm...
    Раньше ее как-то не находил, но были и инструкции от других авторов. Я ж писал выше, что требуется дополнительная настройка, не только вопрос с UAC.
    По ссылке самое основное - это настройка фаервола. Вроде бы хватало только открытие 135 порта тем или иным способом. По моему psexec использует тот же механизм для удаленного запуска, что и wmi/wmic и видимо schtasks то же.
    Пункт про CIMOM я вообще первый раз вижу.

    Вот еще не плохая инструкция по psexec: https://hackware.ru/?p=11638

    В общем эти инструменты работающие, надо только немного приложить голову и руки для настройки окружения.
  • Как из одного приложения запустить другое?

    @res2001
    Only4You, Кстати, пришла в голову мысль. Можно на клиенте скриптом определять состояние клиентского соединения, например анализировать вывод netstat, если соединение не в состоянии ESTABLISHED, то перезагружаем приложение. Т.е. процесс вообще на автомате, без участия сервера.
    Можно реализовать простым батником, запихать его в шедулер на срабатывание раз в минуту например.
  • Как из одного приложения запустить другое?

    @res2001
    Only4You, psexec/wmi (и видимо schtasks то же, не проверял) обычно требуют некоторой настройки на всех удаленных компах, к которым планируется подключение. Я на вскидку не скажу, что там надо делать, погуглите (если возникают ошибки при подключении то можно гуглить по тексту ошибки). По крайней мере в одноранговой сети (без АД) у меня никогда это не работало из коробки, но после небольших настроек работает хорошо.
    Кроме того UAC на удаленных портах блокирует сетевое подключение с админскими правами, т.к. требует повышение привилегий, а это в удаленном случае сделать не возможно. Надо отключить на удаленных компах это поведение (не сам UAC, а только его действие при удаленном подключении), это делается 1 параметром реестра (гуглите параметр LocalAccountTokenFilterPolicy). Если же развернута АД, то по идее оно и так должно работать если подключаетесь с учетной записью доменного админа.

    На мой взгляд вышеперчисленная возня с настройками - это гораздо проще, чем писать и поддерживать самопальное клиент/серверное приложение.
  • Как вывести названия файлов списком?

    @res2001
    Одно но! Если файлов будет достаточно много, то размер получившейся итоговой команды:
    echo !line! >> spisok.txt
    вылезет за максимально возможный размер и будет ошибка переполнение буфера или что-то в этом роде, в общем команда не отработает. На сколько помню в cmd максимальный размер команды 4 Кб.

    Можно воспользоваться конструкцией для блокировки перевода строки в echo и выводить каждый файл отдельно. Пример подхода описан тут: https://stackoverflow.com/questions/7105433/window...

    Другой вариант, более простой, - сформировать файл со списком с помощью dir, а затем в этом файле заменить переводы строк символом разделителем. В винде нет стандартных утилит, которые позволяют это сделать. Но в линуксовом наборе стандартных утилит ком.строки инструментов хватает. Замену можно произвести например с помощью утилиты sed или проще tr. Типичный пример применения tr - это замена виндового варанта CRLF на никсовый LF, погуглите. Линуксовые утилиты сейчас есть много где. Как мне кажется самый простой вариант - установить msys2 там в комплекте уже все есть, если добавить в PATH путь к каталогам bin msys2, то все утилиты можно будет вызывать непосредственно из cmd.
    msys2 - это bash shell с набором стандартных утилит и пакетным менеджером. С помощью пакетного менеджера можно поставить из репозиториев очень много разного софта, который используется в основном в Linux. Основное предназначение - это сборка софта предназначенного для Linux под винду с помощью портированного компилятора. Компилятор там то же не один, а несколько вариантов, например mingw, clang.
  • Надо ли выгружать файл базы данных на гитхаб?

    @res2001
    Обычно как часть проекта делают некий скрипт(ы) для создания пустой базы данных и их уже можно хранить в гите. В процедуру установки/настройки приложения надо включить описание создания базы данных с помощью скриптов.
    Как вариант - встроить функционал по созданию пустой БД в приложение.
  • Как можно ограничить скорость интернета для каждого клиента отдельно в openvpn?

    @res2001
    К OpenVPN это не имеет отношения. Это делается через Queueing Disciplines, которые реализованы в ядре ОС.
    Почитайте про Traffic Control в линуксе.
    LARTC например: https://lartc.org/howto/
    Документ есть на русском. Не смотрите, что документ старый, там все актуально, разве что типов дисциплин стало больше, чем описывается. Но тут уже можно будет маны подключить, если интересно.
  • Подключение/отключение устройств при импорте/экспорте виртуальных машин Virtualbox?

    @res2001
    tests12345,
    а в чём преимущество

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