Я хотел бы автоматизировать существующий процесс, который включает в себя выполнение программ на сервере Linux, которые затем будут отправлять выходные файлы, которые будут редактироваться excel. Результирующие файлы .csv должны запускаться в командной строке Windows DOS. Если бы я хотел бы автоматизировать этот процесс, то одна из вещей, которые я хотел бы знать, - это то, что я могу написать и запустить сценарий на сервере Linux для вызова командной строки Windows DOS. Какие-либо предложения?Есть ли команда Linux или сценарий, который я мог бы написать и запустить на linux для вызова командной строки Windows DOS? Если да, то как?
ответ
Если вы устанавливаете Cygwin (https://www.cygwin.com/), он предоставляет SSH-сервер для Windows. После установки и настройки вы можете получить к нему доступ, как и любой другой SSH-сервер. На сервере SSH Cygwin вы можете выполнять как скомпилированные программы Cygwin, так и собственные программы Windows (родные программы Windows будут показывать графический интерфейс на рабочем столе пользователей, даже если вы отправили X). Чтобы выполнить командную строку DOS, просто введите «cmd.exe». Если вы хотите, чтобы командная строка DOS выполняла файл bat и выходила, вы можете сделать это следующим образом:
cmd.exe/C '"C: \ Path \ to \ file 1.bat"' (Single цитаты из-за того, что имя имеет пробелы, для параметров cmd нужны двойные кавычки, и чтобы Bash не вынимал их, мы должны помещать их между одинарными кавычками).
Примечание. Если вы хотите быстро установить Cygwin, вы можете попробовать этот пакет: "http://www.gage.es/glab-download". Эта установка выполняется из программы с открытым исходным кодом (gLAB), в которой уже установлена автоматическая установка Cygwin. Просто удалите gLAB позже, и у вас будет Cygwin со всем, что вам нужно.
Вариант 1
Это зияющая дыра в безопасности, так как позволяет беспарольное подключение к коробке Windows, из любого места, но если вы только делаете это дома внутри частную сеть, это может быть в порядке ,
В принципе, вы должны установить крошечную программу под названием netcat
(также известную как nc
) на ваш Windows-бокс. Он уже установлен на большинстве Linux-боксов.
Затем на вашем компьютере Windows, в командной строке вы говорите netcat
слушать на порту 10000 (или любой другой вы выбираете) и запустить cmd.exe
обрабатывать все, что он получает на этот порт:
nc -l -p 10000 -v -e cmd.exe
On ваш Linux-ящик, вы подключаетесь к порту 10000 вашего окна Windows, а затем команды, которые вы вводите в свой ящик Linux, обрабатываются cmd.exe
на вашем ящике Windows. Таким образом, предполагается, что ваш ящик для Windows имеет IP-адрес 192.168.0.10:
nc 192.168.0.10 10000
process file.xls
Конечно, установка ssh
сервер является более безопасным, но этот подход имеет преимущество в том, что он требует очень мало установки вообще.
Вариант 2
Другим вариантом может быть, чтобы разделить каталог между машиной Linux и Windows, и иметь машину Windows, регулярно (каждые 10 секунд, может быть), проверьте папку для новых файлов, и если он видит любой процесс и затем переместите их в другой каталог, называемый Processed
, чтобы они не обрабатывались снова на следующей итерации.Так что будет ПАРТИЯ скрипт работает на Windows, который только что сделал петлю:
@echo off
:top
echo Checking for files...
FOR /F ["options"] %%parameter IN (*.CSV) DO (
process file
move file to processed subdirectory
)
sleep 3
goto top
ss64 website См для синтаксиса FOR
цикла.