2016-01-05 8 views
0

Я делаю программу, которая будет работать через сервер принтера и отменяет выполняемые работы. На данный момент он выводит все, и то, что я хочу сделать, это исключить root:Исключая корень из prt_jobs

Выход:

credjet-898837   cdd   5312512 Wed 14 Oct 2015 03:42:32 PM CDT 
credjet-898839   cdd   1998848 Wed 14 Oct 2015 03:45:32 PM CDT 
credjet-940485   cdd   1206272 Mon 04 Jan 2016 01:10:30 PM CST 
credjet-940499   cdd    342016 Mon 04 Jan 2016 01:21:42 PM CST 
credjet-940505   cdd    342016 Mon 04 Jan 2016 01:29:26 PM CST 
credjet-940509   cdd    342016 Mon 04 Jan 2016 01:38:24 PM CST 
credjet-940514   cdd    342016 Mon 04 Jan 2016 02:00:02 PM CST 
credjet-940515   cdd   2387968 Mon 04 Jan 2016 02:00:17 PM CST 
credjet-940525   cdd   2387968 Mon 04 Jan 2016 02:10:46 PM CST 
credjet-940526   cdd   2387968 Mon 04 Jan 2016 02:11:01 PM CST 
credjet-940528   cdd   2387968 Mon 04 Jan 2016 02:12:44 PM CST 
credjet-940602   cdd   2382848 Mon 04 Jan 2016 02:26:09 PM CST 
devljet-931153   siv   1798144 Fri 18 Dec 2015 02:38:30 PM CST 
devljet-931157   siv   3278848 Fri 18 Dec 2015 02:47:18 PM CST 
devljet-931158   siv   1538048 Fri 18 Dec 2015 02:47:18 PM CST 
laser11-917719   root    78848 Wed 18 Nov 2015 09:56:47 PM CST 
laser11-918257   root    78848 Thu 19 Nov 2015 09:45:23 PM CST 
laser11-918262   root    79872 Thu 19 Nov 2015 09:49:30 PM CST 
laser11-918263   root    78848 Thu 19 Nov 2015 09:53:45 PM CST 

Ожидаемый результат:

credjet-898837   cdd   5312512 Wed 14 Oct 2015 03:42:32 PM CDT 
credjet-898839   cdd   1998848 Wed 14 Oct 2015 03:45:32 PM CDT 
credjet-940485   cdd   1206272 Mon 04 Jan 2016 01:10:30 PM CST 
credjet-940499   cdd    342016 Mon 04 Jan 2016 01:21:42 PM CST 
credjet-940505   cdd    342016 Mon 04 Jan 2016 01:29:26 PM CST 
credjet-940509   cdd    342016 Mon 04 Jan 2016 01:38:24 PM CST 
credjet-940514   cdd    342016 Mon 04 Jan 2016 02:00:02 PM CST 
credjet-940515   cdd   2387968 Mon 04 Jan 2016 02:00:17 PM CST 
credjet-940525   cdd   2387968 Mon 04 Jan 2016 02:10:46 PM CST 
credjet-940526   cdd   2387968 Mon 04 Jan 2016 02:11:01 PM CST 
credjet-940528   cdd   2387968 Mon 04 Jan 2016 02:12:44 PM CST 
credjet-940602   cdd   2382848 Mon 04 Jan 2016 02:26:09 PM CST 
devljet-931153   siv   1798144 Fri 18 Dec 2015 02:38:30 PM CST 
devljet-931157   siv   3278848 Fri 18 Dec 2015 02:47:18 PM CST 
devljet-931158   siv   1538048 Fri 18 Dec 2015 02:47:18 PM CST 
#<= No more root 

Есть ли способ, что я могу вывести такую ​​же информацию, но исключить корневые задания?


Источник:

#!/local/usr/bin/ruby 

require 'rubygems' 
require 'net/ssh' 
require 'etc'   

class PrintJobs 

    HOST = '<server here>' #<= Left blank for security 
    USERNAME = Etc.getlogin 
    PASSWORD = nil 

    def scan_for_jobs 
    check_jobs = Net::SSH.start(HOST, USERNAME, :password => PASSWORD) do |ssh| 
     cmd = "prt_jobs" 
     res = ssh.exec!(cmd) 
     puts res 
    end 
    end 
end 

test = PrintJobs.new 
test.scan_for_jobs 
+0

Если ответ вам помог, пожалуйста, примите его. –

+0

@WandMaker Нет, сэр. – Bam

ответ

2

Вы можете избавиться от нежелательных линий, используя код ниже:

res = ssh.exec!(cmd) 
    res = res.split("\n").reject {|line| line.match(/\s+root\s+/)}.join("\n") 
    puts res 

Результат exec! является одна строка, содержащая вывод команды выдается через SSH , Следовательно, нам нужно разбить его на новую строку и перебрать по массиву, чтобы отклонить строки, содержащие root, и повторно присоединить массив, используя новую строку.