
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
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
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";
}
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
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 a DevOps/SRE/DevSecOps/Cloud Expert passionate about sharing knowledge and experiences. I am working at Cotocus. I blog tech insights at DevOps School, travel stories at Holiday Landmark, stock market tips at Stocks Mantra, health and fitness guidance at My Medic Plus, product reviews at I reviewed , and SEO strategies at Wizbrand.
Please find my social handles as below;
Rajesh Kumar Personal Website
Rajesh Kumar at YOUTUBE
Rajesh Kumar at INSTAGRAM
Rajesh Kumar at X
Rajesh Kumar at FACEBOOK
Rajesh Kumar at LINKEDIN
Rajesh Kumar at PINTEREST
Rajesh Kumar at QUORA
Rajesh Kumar at WIZBRAND