Я написал сценарий ruby, который открывает страницу администрирования dlink в firefox и выполняет ADSL-соединение или разъединение.firefox not opening - cron, ruby, firewatir
Я могу запустить этот скрипт в терминале без каких-либо проблем. Но если я ставил его как работу cron, он не запускает firefox.
Это запись я в кронтаб
# connect to dataone
55 17 * * * ruby /home/raguanu/Dropbox/nettie.rb >> /tmp/cron_test
Я вижу следующие записи в/TMP/cron_test. Таким образом, похоже, что сценарий действительно побежал.
PROFILE:
i486-linux
/usr/bin/firefox -jssh
Но я не мог понять, почему я не видел открывать firefox, чтобы эта автоматизация работала. Вот /home/raguanu/Dropbox/nettie.rb
#!/usr/bin/ruby -w
require 'rubygems'
require 'firewatir'
require 'optiflag'
module Options extend OptiFlagSet
character_flag :d do
long_form 'disconnect'
description 'Mention this flag if you want to disconnect dataone'
end
flag :l do
optional
long_form 'admin_link'
default 'http://192.168.1.1'
description 'Dlink web administration link. Defaults to http://192.168.1.1'
end
flag :u do
optional
long_form 'user'
default 'admin'
description 'Dlink administrator user name. Defaults to "admin"'
end
flag :p do
optional
long_form 'password'
default 'admin'
description 'Dlink administrator password. Defaults to "admin"'
end
flag :c do
optional
long_form 'connection_name'
default 'bsnl'
description 'Dataone connection name. Defaults to "bsnl"'
end
extended_help_flag :h do
long_form 'help'
end
and_process!
end
class DlinkAdmin
include FireWatir
def initialize(admin_link = "http://192.168.1.1", user = 'admin', pwd = 'admin')
@admin_link, @user, @pwd = admin_link, user, pwd
end
def connect(connection_name = 'bsnl')
goto_connection_page connection_name
# disconnect prior to connection
@browser.button(:value, 'Disconnect').click
# connect
@browser.button(:value, 'Connect').click
# done!
@browser.close
end
def disconnect(connection_name = 'bsnl')
goto_connection_page connection_name
# disconnect
@browser.button(:value, 'Disconnect').click
# done!
@browser.close
end
private
def goto_connection_page(connection_name = 'bsnl')
@browser ||= Firefox.new
@browser.goto(@admin_link)
# login
@browser.text_field(:name, 'uiViewUserName').set(@user)
@browser.text_field(:name, 'uiViewPassword').set(@pwd)
@browser.button(:value,'Log In').click
# setup > dataone
@browser.image(:alt, 'Setup').click
@browser.link(:text, connection_name).click
end
end
admin = DlinkAdmin.new(Options.flags.l, Options.flags.u, Options.flags.p)
unless Options.flags.d?
admin.connect(Options.flags.c)
else
admin.disconnect(Options.flags.c)
end
Любая помощь приветствуется.
Также обратите внимание, что просто установка переменной DISPLAY может оказаться недостаточной для присоединения к существующему дисплею, так как могут быть файлы конфигурации и файлы полномочий, которые должны быть расположены через переменные среды. например XAUTHORITY –
@Roshan и @Douglas: DISPLAY =: 0.0 в crontab решили проблему. Я согласен с тем, что я мог бы сделать это легче. Я экспериментировал с FireWatir, так что это показалось мне полезным в данный момент. Когда я получу шанс, я попробую более легкий подход. Еще раз спасибо. – rpattabi
+1 - firefox --display =: 0.0 URL решил ту же проблему для меня ... спасибо. – deuberger