2016-07-20 24 views
-1

Ich möchte einen vorhandenen Prozess automatisieren, der das Ausführen von Programmen auf einem Linux-Server beinhaltet, der dann die Ausgabedatei (en) sendet, die von Excel bearbeitet werden sollen. Die resultierenden CSV-Dateien müssen an einer Windows DOS-Eingabeaufforderung ausgeführt werden. Wenn ich diesen Prozess automatisieren möchte, möchte ich unter anderem wissen, ob es möglich ist, ein Skript auf einem Linux-Server zu schreiben und auszuführen, um eine Windows DOS-Eingabeaufforderung aufzurufen. Irgendwelche Vorschläge?Gibt es einen Linux-Befehl oder ein Skript, das ich schreiben und auf Linux ausführen könnte, um eine Windows DOS-Eingabeaufforderung aufzurufen? Wenn das so ist, wie?

Antwort

1

Wenn Sie Cygwin (https://www.cygwin.com/) installieren, bietet es einen SSH-Server für Windows. Nach der Installation und Konfiguration können Sie wie jeder andere SSH-Server darauf zugreifen. Im Cygwin SSH-Server können Sie sowohl Cygwin-kompilierte Programme als auch native Windows-Programme ausführen (Windows-native Programme zeigen die GUI auf dem Desktop des Benutzers an, obwohl Sie das X weitergeleitet haben). Um eine DOS-Eingabeaufforderung auszuführen, geben Sie einfach "cmd.exe" ein. Wenn Sie möchten, dass die DOS-Eingabeaufforderung eine Fledermausdatei ausführt und beendet wird, können Sie Folgendes tun:

cmd.exe/C '"C: \ Pfad \ zu \ Datei 1.bat"' (Der einzelne Anführungszeichen sind, weil der Name Leerzeichen hat, die cmd-Parameter die doppelten Anführungszeichen benötigen, und um zu vermeiden, dass Bash sie herausnimmt, müssen wir sie zwischen einfache Anführungszeichen setzen.

Hinweis: Wenn Sie eine schnelle Cygwin-Installation wünschen, können Sie dieses Paket ausprobieren: "http://www.gage.es/glab-download". Diese Installation stammt von einem Open-Source-Programm (gLAB), in das bereits eine automatische Cygwin-Installation eingebettet ist. Löschen Sie einfach später das gLAB und Sie haben einen Cygwin mit allem, was Sie brauchen.

0

Option 1

Es ist eine klaffende Sicherheitslücke, da es Passwort-less-Verbindung zu Ihrem Windows-Rechner von überall erlaubt, aber wenn Sie nur das in einem privaten Netzwerk zu Hause, kann es in Ordnung sein .

Im Grunde würden Sie das winzige Programm namens netcat (auch bekannt als nc) auf Ihrer Windows-Box installieren. Es ist bereits auf den meisten Linux-Boxen installiert.

dann auf Ihrem Windows-Feld in einer Eingabeaufforderung Sie netcat sagen auf Port 10000 zu hören (oder jeder anderen, die Sie wählen), und führen cmd.exe zu verarbeiten, was es an diesem Port empfängt:

nc -l -p 10000 -v -e cmd.exe 

On Mit Ihrer Linux-Box verbinden Sie sich mit Port 10000 Ihrer Windows-Box und dann werden die Befehle, die Sie in Ihre Linux-Box eingeben, von cmd.exe auf Ihrer Windows-Box verarbeitet. So hat vorausgesetzt, Ihr Windows-Rechner die IP-Adresse 192.168.0.10:

nc 192.168.0.10 10000 

process file.xls 

Natürlich Installation eines ssh Server ist sicherer, aber dieser Ansatz hat den Vorteil, dass es überhaupt sehr wenig Setup erfordert.

Option 2

Eine weitere Option könnte sein, ein Verzeichnis zwischen Linux und Windows-Rechner zu teilen und den Windows-Rechner hat regelmäßig (alle 10 Sekunden vielleicht) überprüfen Sie das Verzeichnis für neue Dateien und ob es einen Prozess sieht sie und dann verschieben Sie sie in ein anderes Verzeichnis namens z. B. Processed, so dass sie nicht erneut bei der nächsten Iteration verarbeitet werden.So wäre es ein Batch-Skript auf Windows ausgeführt sein, dass nur eine Schleife hat:

@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 

Siehe ss64 website für Syntax von FOR Schleife.