Amik ismert problemak:
- A kod egy ponton ruby eval-t futtat minimalis sanitization mellett. A range-ok ertelmes kezelese bonyolultabb lett volna. Gonosz, gonosz eval.
- CentOS 5-on kiakadhat a script, mert az ottani yum-nak problemai vannak a -d / -e / -q kapcsolok kezelesevel. Nem probaltam ki, nem is tervezem, egy darab ilyen gepunk van, ami tobbszorosen is halalra van itelve, a magam reszerol nem itelem fontosnak a megoldasat a problemanak. Patches are welcome.
Akkor tehat a script:
#!/usr/bin/env ruby
require 'pp'
packages = %x{yum -d 0 -e 0 -q list updates}.split(/[\r\n]+/).map { |l| l.split(/\s+/).first }
packages = packages.compact.sort.uniq.find_all { |p| p != '' and p != 'Updated' }
puts " * Choose updateable packages:"
puts
packages.each_with_index do |pkg, i|
puts "#{sprintf "%3d", i}) #{pkg}"
end
puts ' ' + '=' * 40
print "Selection (e.g. 0 5..15): "
ans = STDIN.readline.strip
sels = ans.split(/\s+/).find_all { |a| a.match(/\A\d+(\.\.\d+)?/) }
if sels.empty?
puts "Nothing to do or invalid input, exiting"
exit
end
indexes = sels.collect do |sel|
s=eval(sel) rescue nil
s.is_a?(Range) ? s.to_a : s unless s.nil?
end.flatten.sort.uniq
doing = indexes.map { |i| "#{packages[i]}" }
puts "yum install #{doing.join(' ')}"
system "yum install #{doing.join(' ')}"
- hrgy84 blogja
- A hozzászóláshoz be kell jelentkezni
- 658 megtekintés