drubyでcolinuxからWindowsコマンド実行
ちょっと前作ったwinexec*1がもたつくのでこの前のクリップボード同期を応用してもう少しサクサクいけるようにならないものかと実験してみて、とりあえずコマンドの実行自体は簡単にできた。。が、標準入力と標準出力をどうリダイレクトすばいいのかよくわからない。誰か教えて。
今のところとりあえずwindows側で
winexec-executer.rb:
require 'drb/drb' DRb.start_service('druby://192.168.123.1:12346',Proc.new {|s| system "cd #{s.shift}; #{s.shift} #{s}" }) sleep
を走らせておいて、colinux側に
winexec2-l.rb:
#!/usr/bin/ruby require 'drb/drb' DRbObject.new_with_uri("druby://192.168.123.1:12346").call(ARGV)
とwinexec2:
#!/bin/sh PWD=$(/bin/pwd) || exit 1 if echo "$PWD" | grep '^/cygdrive' > /dev/null 2>&1; then exec ~/scripts/winexec-l.rb "$PWD" "$@" else echo "$(pwd): cannot map to Windows directory" fi
を置いておいて、
$ cd /cygdrive/c/ $ winexec2 notepad test.txt
とすればサクッとメモ帳が開くようにはなっている。
$ winexec2 "/cygdrive/c/Program\ Files/Mozilla\ Firefox/firefox.exe" www.google.com
とすればcolinuxからWindowsのfirefoxでページを開ける。でもコマンドを起動するだけの機能しかないのでplatexなどの対話的なプログラムには使えない。時間できたらruby勉強するかな。