• Debian 11 is approaching its end-of-life (vendor EOL date - August 31, 2026). Plesk Obsidian 18.0.80 will be the last release to support it.
    If you are running Plesk Obsidian on Debian 11, we recommend you upgrade those servers to Debian 12 using our dist-upgrade tool.
  • We plan to deprecate and remove the support for XML RPC protocol versions earlier than 1.6.9.1 in Plesk Obsidian 18.0.82. We strongly recommend that you update all existing integrations using earlier versions of the XML RPC protocol to comply with the version 1.6.9.1 specification.

Resolved Get list of domains and their webroot path in one query?

gbotica

Regular Pleskian
Hi,

I note this useful query to get all domains and their IP addresses from https://kb.plesk.com/en/116917

Code:
# mysql -uadmin -p`cat /etc/psa/.psa.shadow` -Dpsa -e"SELECT dom.id, dom.name, ia.ipAddressId, iad.ip_address FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = 'web') LEFT JOIN IpAddressesCollections ia ON ia.ipCollectionId = d.ipCollectionId LEFT JOIN IP_Addresses iad ON iad.id = ia.ipAddressId"

Returns:
Code:
+----+-------------------------------+-------------+------------+
| id | name                          | ipAddressId | ip_address |
+----+-------------------------------+-------------+------------+
| 21 | domain1.tld                   |           1 | 10.0.0.1   |
| 36 | domain2.tld                   |           1 | 10.0.0.1   |
| 38 | domain3.tld                   |           2 | 10.0.0.2   |
| 26 | domain4.tld                   |           2 | 10.0.0.2   |
+------------------------------------+-------------+------------+

Could anyone rewrite this to select all domains and the webroot path in a space delimited list (or something...)
Code:
domain1.tld /var/www/vhosts/domain1.tld/httpdocs
domain2.tld /var/www/vhosts/domain2.tld/httpdocs
.. etc

That would be really useful for looping through in BASH scripts. Currently I use:

Code:
/usr/local/psa/bin/domain --list

and then loop through each domain, executing:

Code:
/usr/local/psa/bin/domain --info

and then grep the result to get the wwwroot path.

A single DB query would be so much easier ... is this possible?

Thanks.
 
Try to use something like:

# plesk db "SELECT dom.id, dom.name, h.www_root FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = 'web') LEFT JOIN hosting h ON h.dom_id = dom.id"
 
Try to use something like:

# plesk db "SELECT dom.id, dom.name, h.www_root FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = 'web') LEFT JOIN hosting h ON h.dom_id = dom.id"

Fantastic, thanks!
 
Try to use something like:

# plesk db "SELECT dom.id, dom.name, h.www_root FROM domains dom LEFT JOIN DomainServices d ON (dom.id = d.dom_id AND d.type = 'web') LEFT JOIN hosting h ON h.dom_id = dom.id"

Can I format the output of
Code:
plesk db
? (links to 12.0 CLI docs seem to be broken...)

I need to use -s and -N for format the result so I can loop over it in a BASH script.
 
You can use the same

# mysql -uadmin -p`cat /etc/psa/.psa.shadow` -Dpsa -e "select..."

with all necessary format options.
 
Back
Top