For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Upload small files (certs/keys/etc) to BIG-IP via iControl REST (base64 encoded using cli script)

Problem this snippet solves:

I had a need to upload SSL certificates and keys to the BIG-IP in a simple manner that was fast. I did so by creating a cli script that would accept a filename, base64 encoded file and the file type (ascii/binary), then would write out the file to disk.


How to use this snippet:

curl -sk -u username:password -X POST -H 'Content-Type: application/json' https://PRIMARY_F5/mgmt/tm/cli/script -d '{"command":"run","utilCmdArgs":"file_creation [filename] [filetype] [file_base64encoded"}'


Code :

create cli script fileupload {  
proc script::init {} {  
}  
  
proc script::run {} {  
   package require base64  
    set filename [lindex $tmsh::argv 1]  
    set filetype [lindex $tmsh::argv 2]  
    set contents [lindex $tmsh::argv 3]  
    if { [file exists $filename] == 0} {  
        if { $filetype == "binary"} {  
            set result [::base64::decode $contents]  
            set finalfile [open $filename "w"]  
            fconfigure $finalfile -encoding binary  
            puts -nonewline $finalfile [::base64::decode $contents]  
            close $finalfile  
            return 0  
        }  
        if { $filetype == "ascii"} {  
            set result [::base64::decode $contents]  
            set finalfile [open $filename "w"]  
            fconfigure $finalfile  
            puts -nonewline $finalfile [::base64::decode $contents]  
            close $finalfile  
            return 0  
        }  
    }  
    if { [file exists $filename] == 1} {  
        puts "File already exists"  
        error "File already exists"  
        return 1  
    }  
}  
  
proc script::help {} {  
}  
  
proc script::tabc {} {  
}  
    total-signing-status not-all-signed  
}

Tested this on version:

12.1
Published Aug 13, 2019
Version 1.0
No CommentsBe the first to comment