Project

General

Profile

Paste
Download (2.31 KB) Statistics
| Branch: | Revision:

root / drupal7 / scripts / password-hash.sh @ 96ad5adc

1
#!/usr/bin/env php
2
<?php
3

    
4
/**
5
 * Drupal hash script - to generate a hash from a plaintext password
6
 *
7
 * Check for your PHP interpreter - on Windows you'll probably have to
8
 * replace line 1 with
9
 *   #!c:/program files/php/php.exe
10
 *
11
 * @param password1 [password2 [password3 ...]]
12
 *  Plain-text passwords in quotes (or with spaces backslash escaped).
13
 */
14

    
15
if (version_compare(PHP_VERSION, "5.2.0", "<")) {
16
  $version  = PHP_VERSION;
17
  echo <<<EOF
18

    
19
ERROR: This script requires at least PHP version 5.2.0. You invoked it with
20
       PHP version {$version}.
21
\n
22
EOF;
23
  exit;
24
}
25

    
26
$script = basename(array_shift($_SERVER['argv']));
27

    
28
if (in_array('--help', $_SERVER['argv']) || empty($_SERVER['argv'])) {
29
  echo <<<EOF
30

    
31
Generate Drupal password hashes from the shell.
32

    
33
Usage:        {$script} [OPTIONS] "<plan-text password>"
34
Example:      {$script} "mynewpassword"
35

    
36
All arguments are long options.
37

    
38
  --help      Print this page.
39

    
40
  --root <path>
41

    
42
              Set the working directory for the script to the specified path.
43
              To execute this script this has to be the root directory of your
44
              Drupal installation, e.g. /home/www/foo/drupal (assuming Drupal
45
              running on Unix). Use surrounding quotation marks on Windows.
46

    
47
  "<password1>" ["<password2>" ["<password3>" ...]]
48

    
49
              One or more plan-text passwords enclosed by double quotes. The
50
              output hash may be manually entered into the {users}.pass field to
51
              change a password via SQL to a known value.
52

    
53
To run this script without the --root argument invoke it from the root directory
54
of your Drupal installation as
55

    
56
  ./scripts/{$script}
57
\n
58
EOF;
59
  exit;
60
}
61

    
62
$passwords = array();
63

    
64
// Parse invocation arguments.
65
while ($param = array_shift($_SERVER['argv'])) {
66
  switch ($param) {
67
    case '--root':
68
      // Change the working directory.
69
      $path = array_shift($_SERVER['argv']);
70
      if (is_dir($path)) {
71
        chdir($path);
72
      }
73
      break;
74
    default:
75
      // Add a password to the list to be processed.
76
      $passwords[] = $param;
77
      break;
78
  }
79
}
80

    
81
define('DRUPAL_ROOT', getcwd());
82

    
83
include_once DRUPAL_ROOT . '/includes/password.inc';
84
include_once DRUPAL_ROOT . '/includes/bootstrap.inc';
85

    
86
foreach ($passwords as $password) {
87
  print("\npassword: $password \t\thash: ". user_hash_password($password) ."\n");
88
}
89
print("\n");
90