Virtualmin on the command line


We often encourage our users to use software which is better, and does things in a standard way. When it comes to control panels we prefer Virtualmin. It works with the distro you are using and the packages that come with it rather than setting up things in its own odd way and tieing you into using strange configs that lock you into using it.
Also it imports from all other platforms nicely (cpanel, plesk etc) which is handy to those who are locked into a lot of the more overpriced web panels. But the best thing yet is that its a reasonable price, in fact the GPL version is free and fully functioning!

By default it uses FCGI for PHP, which is a great option, however we had a customer who was struggling to keep ram usage down so wanted to convert to mod_php which was slightly faster and used less memory. Since he had more than a few domains this could have been painstaking, in fact it was until i emailed one of the creators of Virtualmin.
Not only did i get a great response, but i got it within minutes!

I had wondered if Virtualmin had a command line interface, and thus asked if there was any command line way i could do it, i got this reply.

Yes – you can use the command :

virtualmin modify-web --domain whatever.com --mode mod_php"

You can combine this with a shell loop using the output from :

virtualmin list-domains --with-feature web --name-only

Something like :

for dom in $(virtualmin list-domains --with-feature web --name-only); do
  virtualmin modify-web --domain $dom --mode mod_php
done

You can create a summary of SSL certificate information on the server with:

for dom in $(virtualmin list-domains --with-feature web --name-only); do echo $dom====;virtualmin get-ssl --domain $dom; done | egrep '===|cn:|notafter|alt:|issuer_o|type:'
example.com====
cn: ads.example.com
issuer_cn: R3
issuer_o: Let's Encrypt
notafter: Feb 17 18:06:22 2022 GMT
type: Signed by CA
alt: ads.example.com

I modified this somewhat so i had an exclude list and then went with it. I think perhaps I should have put a sleep in there somewhere, the load went rather high for some time :)

[root@hostname ~]# virtualmin
usage: /usr/sbin/virtualmin  [args..]
   or: /usr/sbin/virtualmin help 

Available commands :

Backup and restore
------------------
backup-domain            Backup one or more virtual servers
list-scheduled-backups   Outputs a list of scheduled backups
restore-domain           Restore one or more virtual servers

Virtual servers
---------------
create-domain            Create a virtual server
delete-domain            Delete one or more virtual servers.
disable-domain           Temporarily disable a virtual server
enable-domain            Re-enable one virtual server
migrate-domain           Imports a virtual server from some other product
modify-domain            Change parameters of a virtual server
move-domain              Change the owner of a virtual server
unalias-domain           Convert an alias domain into a sub-server.
unsub-domain             Convert a sub-domain into a sub-server.
list-domains             Lists all virtual servers.
notify-domains           Send email to some or all virtual server owners.
validate-domains         Check the configuration of virtual servers
enable-feature           Turn on some features for a virtual server
disable-feature          Turn off some features for a virtual server
modify-dns               Change DNS settings for virtual servers
modify-spam              Change spam filtering and delivery settings for a
                         virtual server
modify-web               Change a virtual server's web configuration
modify-mail              Change mail-related settings for some domains
resend-email             Re-send the signup email for a domain

Mail and FTP users
------------------
create-user              Create a mail, FTP or database user
delete-user              Delete a mail, FTP or database user
modify-user              Change attributes of a mail, FTP or database user
list-users               List users in a virtual server
list-available-shells    List all shells for use with domain owners and
                         mailboxes
list-mailbox             Dump inbox email for one user

Mail aliases
------------
create-alias             Create a new mail alias
create-simple-alias      Adds a mail alias to some domain, with simple
                         parameters
delete-alias             Delete a mail alias
list-aliases             List aliases for a virtual server
list-simple-aliases      Lists mail aliases in a simple format for some domain
create-simple-alias      Adds a mail alias to some domain, with simple
                         parameters
list-simple-aliases      Lists mail aliases in a simple format for some domain

Server owner limits
-------------------
disable-limit            Removes access to some feature or edit capability for
                         some virtual servers
enable-limit             Grants access to some feature or edit capability for
                         some virtual servers
modify-limits            Changes the owner limits for some virtual server
modify-resources         Changes resource limits for some virtual server(s)

Extra administrators
--------------------
create-admin             Creates an extra administrator for a virtual server
delete-admin             Deletes an extra administrator from a virtual server
modify-admin             Updates an extra administrator for a virtual server
list-admins              Lists administrators belonging to a virtual server

Custom fields
-------------
list-custom              List custom fields for virtual servers
modify-custom            Modify custom fields for a virtual server

Databases
---------
create-database          Creates a database for a virtual server
delete-database          Deletes one database
import-database          Adds an existing database to a virtual server
list-databases           Lists databases for some virtual server
modify-database-hosts    Adds or removes an allowed MySQL host for some or all
                         domains 

Reseller accounts
-----------------
create-reseller          Create one reseller account
delete-reseller          Delete one reseller
modify-reseller          Modify attributes for an existing reseller
list-resellers           List existing resellers

Script installers
-----------------
install-script           Install one third-party script
delete-script            Un-install one script from a virtual server
list-scripts             Display script installed into some virtual server
list-available-scripts   List known scripts

Proxies and balancers
---------------------
create-proxy             Adds a per-directory proxy to some domain
delete-proxy             Removes a proxy balancer from some domain
list-proxies             Lists web proxy balancers in some domain

PHP versions
------------
delete-php-directory     Remove any custom version of PHP for some directory
set-php-directory        Set the version of PHP to run in some directory
list-php-directories     List all directories in which a specific version of PHP
                         has been activated 

SSL certificates
----------------
list-certs               Output the certificates for some or all virtual
                         servers.
generate-cert            Generate a new self-signed cert or CSR for a virtual
                         server.
install-cert             Replace the SSL certificate or private key for a
                         virtual server. 

Virtual server templates
------------------------
create-template          Creates a template for use by new domains.
delete-template          Removes one virtual server template.
get-template             Outputs all settings in a template.
modify-template          Changes one or more settings in a template.
list-templates           List available templates for new domains

Account plans
-------------
create-plan              Creates a new account plan for use with virtual
                         servers.
delete-plan              Removes one existing account plan.
modify-plan              Modifies an existing account plan for use with virtual
                         servers.
list-plans               List available account plans for new domains

Other scripts
-------------
change-licence           Change a system's Virtualmin license key
change-password          Changes the password of some Virtualmin user.
check-config             Run the Virtualmin config check
check-connectivity       Checks the external accessibility of virtual servers.
copy-mailbox             Copy mail from one location to another, perhaps
                         converting formats.
create-redirect          Adds a web redirect or alias to some domain
create-shared-address    Adds an IP address for use by multiple virtual servers
delete-redirect          Removes a web redirect or alias from some domain
delete-shared-address    Removes an IP address that can be used by virtual
                         servers
disable-writelogs        Disable logging via program
enable-writelogs         Enable logging via program
get-dns                  Output all DNS records for a domain.
get-ssl                  Output SSL certificate information for a domain.
info                     Show general information about this Virtualmin system.
licence-info             Show license counts for this Virtualmin system.
list-bandwidth           Shows bandwidth usage for some domain over a date range
list-commands            Lists API scripts available
list-features            Lists features available when creating a domain
list-php-ini             Show PHP variables for some or all domains.
list-redirects           Lists web redirects and aliases in some domain
list-shared-addresses    Lists shared IP addresses for virtual servers
list-styles              Lists all configuration templates
lookup-domain-daemon     A background process for looking up user details.
modify-php-ini           Changes PHP variables for some or all domains.
run-all-webalizer        Run Webalizer reports for all virtual servers
search-maillogs          Searches mail server and procmail logs
set-spam                 Change the spam and virus scanners for all domains
test-imap                Checks if IMAP login to some server works.
test-pop3                Checks if POP3 login to some server works.
test-smtp                Checks if the mail server can RCPT to some address

2 responses to “Virtualmin on the command line”

  1. Very nice! Thanks!

    Question though, do you or anyone that reads this page aware of the location to edit the Script upgrade notification email that gets send out when a script installer gets an update?