At jira 6.2 i get:
Creating connection to [https://**********************/]... Use of uninitialized value in string eq at reindex_test.pl line 34 (#1) (W uninitialized) An undefined value was used as if it were already defined. It was interpreted as a "" or a 0, but maybe it was a mistake. To suppress this warning assign a defined value to your variables. To help you figure out what was undefined, perl will try to tell you the name of the variable (if any) that was undefined. In some cases it cannot do this, so it also tells you what operation you used the undefined value in. Note, however, that perl optimizes your program anid the operation displayed in the warning may not necessarily appear literally in your program. For example, "that $foo" is usually optimized into "that " . $foo, and the warning will refer to the concatenation (.) operator, even though there is no . in your program. Uncaught exception from user code: Could not login to jira, verify username and password!
Here is the Code (based on: https://answers.atlassian.com/questions/171272/jira-automated-reindex-script-for-version-5-and-later?page=1#283284):
#!/usr/bin/perl ################################################################################### # Re-Index.pl by Jason Hensler # Starts re-index job for jira. Tested with JIra 5.2.4 and 6.0.7 ################################################################################### #disable ssl verfication, using this for self-signed cert otherwise comment out. $ENV{'PERL_LWP_SSL_VERIFY_HOSTNAME'} = 0; use warnings; use diagnostics; use Data::Dumper; use LWP::UserAgent; # Change these my $user = "*****"; my $pass = "******"; my $jira_url = "https://*************************/"; my $cookie_jar = $ENV{'HOME'}; #change this if you need to, should only be need is there is a permissions issue. my $index_type = 1; #This is for jira 5.2 and above. Set to 1 for background re-index or 0 for locking index. my $error = 0; #setup initial connection paramaters my $status; print("Creating connection to [$jira_url]... \n"); my $ua = LWP::UserAgent->new; $ua->cookie_jar({ file => "$cookie_jar/\.cookies.txt" }); $ua->default_header('X-Atlassian-Token' => 'no-check'); #do login $status = $ua->post($jira_url.'secure/admin/IndexAdmin.jspa', [ 'os_username' => $user, 'os_password' => $pass]); if($status->header('X-Seraph-LoginReason') eq "AUTHENTICATED_FAILED" || $status->code !=200) {die("Could not login to jira, verify username and password!\n");} else { print("Successfully logged in to Jira.\n"); #do websudo $status = $ua->post($jira_url.'secure/admin/WebSudoAuthenticate.jspa',[ 'webSudoPassword' => $pass]); # I'm using the http code here because the user header check stays ok and I didn't want to grep the output for an error... # If we pass sudo check we get redirected to /secure/ and code is 302, otherwise we get served an error page with status 200 if($status->code != 302) { unlink('$cookie_jar/.cookies.txt'); print("We did not sudo properly, check that your password is good and the your user is an admin!\n"); $error = 1; } else { print("Successfully passed websudo, kicking off indexing... "); #do re-index if($index_type == 1) {$index_type='background';} $status = $ua->post($jira_url.'IndexReIndex.jspa', [ 'indexPathOption' => 'DEFAULT','Re-Index' =>'Re-Index', 'indexingStrategy' => $index_type]); if($status->code != 302) { print("Could not start re-index, check that your password is good and the your user is an admin!\n"); $error = 1; } else { print("Re-index has started.\n"); print ("Task url: ".$status->header('location')."\n"); my $finished = 0; my $temp_file = "out.html"; while ($finished eq 0) { my $progress = $ua->mirror($status->header('location'),$temp_file); sleep(5); open(my $tmp, "<", $temp_file); while(eof($tmp) != 1) { my $line = readline($tmp); $line =~ s/^\s+|\s+$//g; #print($line); if ( substr($line,0,15) eq "Re-indexing is ") { print ("Reindex is at ".substr($line,15,3)."\n"); if(substr($line,15,3) eq "100") { $finished = 1; print ("DONE!\n"); } } } unlink($temp_file); sleep(5); } $error = 0; } } } unlink('$cookie_jar/.cookies.txt'); exit $error;
i changed it to
if ( substr($line,0,15) eq "Die Neuindizierung ist zu") {
but it does not work..
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
The 15 needs to be changed to 26 within that line and you need a space after "zu", should look like this:
if ( substr($line,0,26) eq "Die Neuindizierung ist zu ") {
The reason for this is I am checking only the characters 0 to 26 to be equal to "Die Neuindizierung ist zu ".
You also need to change these lines:
print ("Reindex is at ".substr($line,15,3)."\n"); if(substr($line,15,3) eq "100") {
To:
print ("Reindex is at ".substr($line,26,3)."\n"); if(substr($line,26,3) eq "100") {
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
in the out.html it looks like:
div class="pb_section"> <span> Bearbeitung läuft: Issue Index: Die Neuindizierung ist zu 33% abgeschlossen. </span> </div>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
the script don't stops automatically. Is it possible? We want to trigger it every day via an automizer.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
The script is looking for the string: "Re-indexing is 100%" before it "finishes". If you're Jira is running an non-English (us) language page then this string might need to be changed on line 59. You could also change line 56 to my
$finished
= 0;, this will cause the script to finish before jira does.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
i get 404:
$VAR1 = bless( {
'_msg' => 'Not Found'
But the URL should be correct. our Jira listens not on /jira/ it works under https://<SERVER>/jira-one-test/
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
my fault... :( our testsystem has no SSL ^^ only http... now it works
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I am a perl newbie :(
i added it like this:
#do login $status = $ua->post($jira_url.'secure/admin/IndexAdmin.jspa', [ 'os_username' => $user, 'os_password' => $pass]); echo(Dumper($status)); if($status->header
i get error:
Undefined subroutine &main::echo called at reindex_test.pl line 34 (#1) (F) The subroutine indicated hasn't been defined, or if it was, it has since been undefined. Uncaught exception from user code: Undefined subroutine &main::echo called at reindex_test.pl line 34.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
opps, sorry I've made a mistake (been working on a lot of php latley). The code should be:
print(Dumper($status)); $status = $ua->post($jira_url.'secure/admin/IndexAdmin.jspa', [ 'os_username' => $user, 'os_password' => $pass]);
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
the script don't stops automatically. Is it possible? We want to trigger it every day via an automizer.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Julian Bonkamp
You had your question in the right place the first time. Looks like it's not happy with:
if
(
$status
->header(
'X-Seraph-LoginReason'
) eq "
AUTHENTICATED_FAILED"
Check to make sure that your jira $jira_url is correct, should be https://jira_server/jira. The "/jira/" at the end is important and the url must end in "/". If that does not fix it, add the line of code before the if statment:
echo(Dumper($status));
This will output the entire content of the $status httpd call. You will get raw http resonse data but, it should show any error messages or headers that the server is returning.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.