These scripts will:
โ
Connect to the Perforce server
โ
Retrieve a list of users
โ
Identify users without passwords
1. Prerequisites
Before running the scripts, ensure:
โ Perforce CLI (p4) is installed and accessible in PATH
โ You have Perforce admin privileges (needed to check user settings)
โ You can run p4 users and p4 -ztag users successfully
2. Ruby Script: Find Perforce Users Without Passwords
#!/usr/bin/env ruby
# Define Perforce server details
P4PORT = "perforce.company.com:1666"
P4USER = "admin_user"
# Fetch list of users with details
users_output = `p4 -p #{P4PORT} -u #{P4USER} -ztag users`
# Parse the output and extract users without passwords
users_without_passwords = []
users_output.split("\n\n").each do |entry|
user = entry.match(/^... user (\S+)/)&.captures&.first
auth_method = entry.match(/^... AuthMethod (\S+)/)&.captures&.first || "perforce"
# If 'AuthMethod' is missing or 'perforce', the user may not have a password set
users_without_passwords << user if auth_method == "perforce"
end
# Print results
puts "Perforce Users Without Passwords:"
if users_without_passwords.empty?
puts "All users have passwords set."
else
users_without_passwords.each { |user| puts user }
end
Code language: PHP (php)
How to Run the Ruby Script
1๏ธโฃ Save the script as find_p4_users_without_passwords.rb
2๏ธโฃ Replace "perforce.company.com:1666" and "admin_user" with actual Perforce server details
3๏ธโฃ Open a terminal and run:
ruby find_p4_users_without_passwords.rb
Code language: CSS (css)
3. Perl Script: Find Perforce Users Without Passwords
#!/usr/bin/perl
use strict;
use warnings;
# Define Perforce server details
my $P4PORT = "perforce.company.com:1666";
my $P4USER = "admin_user";
# Run 'p4 -ztag users' command and capture output
my @users_output = `p4 -p $P4PORT -u $P4USER -ztag users`;
# Parse output and extract users without passwords
my @users_without_passwords;
my $current_user;
my $auth_method = "perforce"; # Default authentication method
foreach my $line (@users_output) {
if ($line =~ /^\.\.\. user (\S+)/) {
$current_user = $1;
$auth_method = "perforce"; # Reset to default for new user
}
elsif ($line =~ /^\.\.\. AuthMethod (\S+)/) {
$auth_method = $1;
}
# If no AuthMethod or "perforce", assume no password is set
if ($auth_method eq "perforce" && defined $current_user) {
push @users_without_passwords, $current_user;
$current_user = undef; # Reset for the next user
}
}
# Print results
print "Perforce Users Without Passwords:\n";
if (@users_without_passwords) {
print join("\n", @users_without_passwords), "\n";
} else {
print "All users have passwords set.\n";
}
Code language: PHP (php)
How to Run the Perl Script
1๏ธโฃ Save the script as find_p4_users_without_passwords.pl
2๏ธโฃ Replace "perforce.company.com:1666" and "admin_user" with actual Perforce server details
3๏ธโฃ Open a terminal and run:
perl find_p4_users_without_passwords.pl
Code language: CSS (css)
4. Explanation
โ p4 -ztag users retrieves all Perforce users with authentication details
โ The script extracts the AuthMethod field for each user:
- If AuthMethod is missing or set to
perforce, the user likely has no password
โ The list of users without passwords is displayed
5. Conclusion
These scripts help Perforce administrators identify users who have not set passwords, improving security.
Would you like enhancements like exporting results to a file or automating password resets? Let me know! ๐
I’m Rajesh Kumar, a DevOps, SRE, DevSecOps, Cloud, and Platform Engineering expert passionate about sharing practical knowledge, real-world experiences, and industry best practices. I have worked at Cotocus and regularly write about technology, travel, investing, health, product reviews, and digital marketing through my various platforms.
I publish technical articles at DevOps School, travel stories at Holiday Landmark, stock market insights at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at TrueReviewNow, and SEO and digital marketing strategies at Wizbrand.
Find Trusted Cardiac Hospitals
Compare heart hospitals by city and services โ all in one place.
Explore Hospitals