#!/usr/bin/env ruby # frozen_string_literal: true require 'pwn' require 'optparse' opts = {} OptionParser.new do |options| options.banner = "USAGE: #{$PROGRAM_NAME} [opts] " options.on('-sIP', '--jenkins_ip=IP', '') { |s| opts[:jenkins_ip] = s } options.on('-dPORT', '--dest-port=PORT', '') do |port| opts[:port] = port end options.on('-UAUSER', '--admin-username=AUSER', '') do |auser| opts[:admin_username] = auser end options.on('-PAPASS', '--admin-password=APASS', '') do |apass| opts[:admin_password] = apass end options.on('-uNUSER', '--new-username=NUSER', '') do |nuser| opts[:new_username] = nuser end options.on('-pNPASS', '--new-password=NPASS', '') do |npass| opts[:new_password] = npass end options.on('-nNAME', '--new-fullname=NAME', '') do |fullname| opts[:new_fullname] = fullname end options.on('-eEMAIL', '--new-email=EMAIL', '') do |email| opts[:new_email] = email end end.parse! if opts.empty? puts `#{$PROGRAM_NAME} --help` exit 1 end jenkins_ip = opts[:jenkins_ip].to_s.scrub port = opts[:port].to_i admin_username = opts[:admin_username] admin_password = opts[:admin_password] new_username = opts[:new_username] new_password = opts[:new_password] new_fullname = opts[:new_fullname] new_email = opts[:new_email] if port.positive? jenkins_obj = PWN::Plugins::Jenkins.connect( jenkins_ip: jenkins_ip, port: port, username: admin_username, password: admin_password ) else jenkins_obj = PWN::Plugins::Jenkins.connect( jenkins_ip: jenkins_ip, username: admin_username, password: admin_password ) end sleep 3 PWN::Plugins::Jenkins.create_user( jenkins_obj: jenkins_obj, username: new_username, password: new_password, fullname: new_fullname, email: new_email ) PWN::Plugins::Jenkins.disconnect(jenkins_obj: jenkins_obj) puts 'complete.'