If your Perforce server is set to security level 2 or lower you can have your trigger script run as the same user every time (typically a “background” user). Then, either have the server’s P4PASSWD environment variable set to the background user’s password,
You can also use the -P flag to specify the password with the P4 commands issued by the script.
You can echo the password and pipe it to the login command. Note that there is no space between the password and the pipe symbol.
echo <password>| p4 login
If you do not want to place a password in the script, you can use a text file containing the password. Make sure this password file has appropriate read and write privileges.
p4 login < password.txt
A more secure method is to use ticket based authentication and a group to keep a background user “logged in” at the Perforce server:
1. Create a group:
p4 group always_on
2. Add your background user to the “Users” field.
3. Change the timeout from the default setting (12 hours), which is set in seconds. The new value depends on the server version:
# 2008.1 and later: Set this value to “unlimited”. A timeout value of zero is no longer accepted.
# 2005.1 to 2007.3: Set this value to zero.
# 2004.2 and earlier: Set this to a very large value — but not too large, as some server versions do not handle situations where the timeout is set to exceed the “Unix Epoch”, which is approximately in the year 2038. A safe value is 315532800 seconds, which is about 10 years.
# Save the group.
# In your trigger script, log the background user in and run the trigger once.
echo password| p4 -p server:port -u username login
# If the trigger runs properly, you can remove the password line.
The user now remains logged in. Since this is ticket based authentication, they remain logged in even if the server is shut down or the hardware is rebooted.