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

    @res2001
    Дамир Валиахметов,
    т.е. после первого ввода пары значений просто появляется пустая строка

    Да это не пустая строка, это то что ты видишь в ходе работы ReadLine в этом участке кода.
    while (Console.ReadLine() == stopWord);
    А это
    Console.WriteLine("Если хотите выйти введите exit: ");

    просто делает немного яснее происходящее.

    Я же тебе писал, что у тебя не 2 ввода значений, как ты похоже думаешь, а 3. Третий раз ты получаешь от пользователя exit или любое другое значение, которое интерпретируется как продолжение ввода.
  • Как реализовать ввод данных в консоль пользователем, пока он не введет определенное слово?

    @res2001
    Дамир Валиахметов,
    Мне нужно чтобы программа выдавала запрос на ввод имени и возраста пока юзер не введет exit

    У вас сейчас в коде пользователь должен вводить данные 3 раза на каждой итерации цикла:
    1. имя
    2. возраст
    3. признак возврата: exit или все что угодно для продолжения.

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

    @res2001
    Дамир Валиахметов, За исключением того, что по ссылке криво выводятся русские буквы, остальное все отработало так как надо.
    Разве что вы не выполнили этот совет, поэтому вам возможно и не понятно что делает ваш код и в каком состоянии программа в данный момент времени: Как реализовать ввод данных в консоль пользователем, пока он не введет определенное слово?
  • Как реализовать ввод данных в консоль пользователем, пока он не введет определенное слово?

    @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). Если же развернута АД, то по идее оно и так должно работать если подключаетесь с учетной записью доменного админа.

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