cross-platform scripting for windows, Linux, MacOS X
WindowsLinuxScriptingMultiplatformWindows Problem Overview
I'm looking for cross-platform scripting (language) for windows, Linux, MacOS X.
I'm tired of .bat / bash .
I would like to do things like for example ,,lock workstation'' at automatic login (I had this in X-Window but the solution was pretty ugly; now, I would like that on MS Windows and not that ugly :-) ).
Generally: automate tasks.
Or would I be better off with Windows Scripting Host?
PowerShell also comes to mind, but that's seems to Windows-only for my taste.
Can languages like Python, Ruby, (Java?) interact (elegantly? sensibly?) with WSH?
Also things like DBUS, DCOM, etc come to mind as part of the picture.
Currently I use a mixture of Java, .bat, bash, Ruby, Scala; some VBA for Excel. Which sometimes gets pretty ugly.
I would like a cross-platform general solution with/using ,,native'' parts close to OS-specifics. Like e.g. Ruby driving some Windows-specific stuff (just a guess).
What do You use?
TIA
Windows Solutions
Solution 1 - Windows
I'm a huge fan of Lua:
-
Syntax is vaguely Pascal-like and works well in scripts.
-
Superb power-to-weight ratio. Superb engineering. Very good design.
-
Extremely portable to any platform with an ANSI C compiler.
-
GUI support through wxLua and other bindings
-
Some support for hiding OS differences in common tasks, e.g., the Lua File System add-on
-
The core system and libraries are simple enough that you can understand all of what you're using, but still have excellent leverage compared to bash/bat. Expressive power is comparable to Python or Ruby.
-
You're not overwhelmed with libraries and frameworks, which can be a plus or a minus.
-
There is an excellent book: Roberto Ierusalimschy's Programming in Lua; you can get the previous edition free online.
-
Performance beats tcl, perl, python, ruby
-
For even faster performance on x86 hardware, there is LuaJIT.
-
Finally, and this is the ace in the hole: if you run into any kind of platform-specific problem, it is easy to write platform-specific C code and load it into a Lua script dynamically. Lua was designed with this task in mind and does it extremely well. You can also easily dip into C for performance (e.g., compute MD5 checksum).
Over the last 3 to 5 years, I have been gradually migrating scripts from bash/ksh/awk/sed/grep/perl into Lua. I have been very happy with the results.
Solution 2 - Windows
You could try Batsh
> Batsh is a simple programming language that compiles to Bash and Windows Batch. It enables you to write your script once runs on all platforms without any additional dependency.
Solution 3 - Windows
Perl and Python are both available on almost every platform
Solution 4 - Windows
I think you're juggling on the edge of contradictory: you would like platform-independent (commendable) but also "close to OS specifics".
If, however, you put a bit more emphasis on platform independence, I've been entertaining the idea of using groovy (a more java-friendly relative of ruby) for general purpose scripting. When you need it, you get OS-specific behaviour by invoking OS shell commands.
My motivation is a bit different: I find groovy code to be more robust than that of bash, although I too will need a good multi-platform scripting tool for a project I'm developing.
Solution 5 - Windows
You could write your scripts in Tcl.
-
the syntax is simple and closer to what you'd expect from a script;
-
it is cross-platform, and will run on all major platforms;
-
you can easily create simple GUIs for your scripts in Tk, which will also work everywhere and use native controls;
-
for the Windows-specific functions, you can use Twapi (Win32 API bindings).
-
you can install a Tclkit, which is a single file that is the whole Tcl distribution. There's no lengthy install process or hidden files or mysterious directories;
-
you can easily put a linux, windows and mac runtime on a single flash drive so you always have an interpreter handy even if there's not one installed locally.
Solution 6 - Windows
> Like e.g. Ruby driving some Windows-specific stuff
It certainly can and on the Ruby on Windows blog you can find lots of examples also there's a chapter in the Pickaxe book and in the humble one.
Solution 7 - Windows
I would use C# with Mono.
Solution 8 - Windows
there is possibility for UNIX and UNIX like platforms in shell, but I don`t think that this what you are asking for is possible in any scripting language because of windows.
For UNIX systems you can use this:
#!/bin/sh
TYPE=`uname`;
echo 'this is ' ${TYPE};
if [ ${TYPE} = HP-UX ]
then bdf /var;
elif [ ${TYPE} = Linux ]
then df -h /var;
elif [ ${TYPE} = FreeBSD ]
then df -k /var;
else echo "Unsupported OS - ${TYPE}"
fi
I hope it will help you!
Solution 9 - Windows
Not sure if you still need it, but if so, try ant ( http://ant.apache.org/ ). It's a cross platform "script language". Basically, a ant file is a xml file interpreted by a JVM programm.