サイトにログインし、特定のページに移動して、前回の実行結果と比較するCygwin/Bashのコマンドラインスクリプトを作成したいと思います。これまでのところ、私はそれを次のようにLynxで動作させています:
----snpipped, just setting variables----
echo "# Command logfile created by Lynx 2.8.5rel.5 (29 Oct 2005)
----snipped the recorded keystrokes-------
key Right Arrow
key p
key Right Arrow
key ^U" >> $tmp1 #p, right arrow initiate the page saving
#"type" the filename inside the "where to save" dialog
for i in $(seq 0 $((${#tmp2} - 1)))
do
echo "key ${tmp2:$i:1}" >> $tmp1
done
#hit enter and quit
echo "key ^J
key y
key q
key y
" >> $tmp1
lynx -accept_all_cookies -cmd_script=$tmp1 https://thewebpage.com/login
diff $tmp2 $oldComp
mv $tmp2 $oldComp
確かに「正しい」とは感じません。cmd_scriptは、正確なリンク名とアクションを指定するのではなく、相対的なユーザーアクションで構成されます。そのため、サイト上の何かが変更されたり、場所が変わったり、新しいリンクが追加されたりした場合は、アクションを再作成する必要があります。
また、エラーをチェックできないため、問題が発生した場合(ログインに失敗した場合など)にスクリプトを中止できません。
私が見ているもう1つの選択肢は、Rubyを使用した機械化です(注として、Rubyの使用経験はありません)。
これを改善または書き直すための最良の方法は何でしょうか?