#!/bin/bash # NextCloudPi diagnostics report # # Copyleft 2017 by Ignacio Nunez Hernanz # GPL licensed (see end of file) * Use at your own risk! # # Usage: # sudo ncp-diag # # More at https://ownyourbits.com # # Distro, NCP version and tag echo "NextCloudPi version|$( cat /usr/local/etc/ncp-version )" [[ -f /usr/local/etc/ncp-baseimage ]] && echo "NextCloudPi image|$( cat /usr/local/etc/ncp-baseimage )" echo "distribution|$( cat /etc/issue )" # Data DATADIR="$( grep datadirectory /var/www/nextcloud/config/config.php | awk '{ print $3 }' | grep -oP "[^']*[^']" | head -1 )" test -d "$DATADIR" || DIRINFO=" (doesn't exist)" USBDEVS="$( lsblk -S -o NAME,TRAN | awk '{ if ( $2 == "usb" ) print $1; }' | tr '\n' ' ' )" [[ "$USBDEVS" == "" ]] && USBDEVS="none" am_cfg="/usr/local/etc/ncp-config.d/nc-automount.cfg" [[ -f "$am_cfg" ]] && [[ "$(jq -r ".params[0].value" "$am_cfg")" == "yes" ]] && echo "automount|yes" || echo "automount|no" echo "USB devices|$USBDEVS" echo "datadir|$DATADIR$DIRINFO" [[ "$DIRINFO" == "" ]] && { echo "data in SD|$( [[ $( stat -fc%d / ) == $( stat -fc%d "$DATADIR" ) ]] && echo yes || echo no )" echo "data filesystem|$( stat -fc%T $DATADIR )" echo "data disk usage|$( df -h "$DATADIR" | tail -1 | awk '{ print $3"/"$2 }')" } echo "rootfs usage|$( df -h / | tail -1 | awk '{ print $3"/"$2 }')" SWP="$( swapon | tail -1 | awk '{ print $1 }' )" [[ "$SWP" == "" ]] && SWP="none" echo "swapfile|$SWP" # Database DBDIR=$( grep datadir /etc/mysql/mariadb.conf.d/90-ncp.cnf | awk -F "= " '{ print $2 }' ) test -d "$DBDIR" || DBDIRINFO=" (doesn't exist)" echo "dbdir|$DBDIR$DBDIRINFO" # Nextcloud [[ ${EUID} -eq 0 ]] && SUDO="sudo -u www-data" VERSION="$( $SUDO php /var/www/nextcloud/occ status | grep "version:" | awk '{ print $3 }' )" if [[ "$VERSION" != "" ]]; then echo "Nextcloud check|ok" echo "Nextcloud version|$VERSION" else echo "Nextcloud check|error" fi # Services echo "HTTPD service|$( pgrep -c apache2 &>/dev/null && echo up || echo down )" echo "PHP service|$( pgrep -c php-fpm &>/dev/null && echo up || echo down )" echo "MariaDB service|$( pgrep -c mysqld &>/dev/null && echo up || echo down )" echo "Redis service|$( pgrep -c redis-server &>/dev/null && echo up || echo down )" echo "Postfix service|$( pgrep -fc postfix &>/dev/null && echo up || echo down )" # WAN echo "internet check|$( ping -W 2 -w 1 -q github.com &>/dev/null && echo ok || echo no )" function is_port_open() { PORT=$1 wget -T2 -t1 -q https://portchecker.co/check --post-data "port=$PORT" -O - \ | grep -q 'open' && { echo "open"; return 1; } echo "closed" } echo "port check 80|$( is_port_open 80 )" echo "port check 443|$( is_port_open 443 )" # LAN IFACE=$( ip r | grep "default via" | awk '{ print $5 }' | head -1 ) GW=$( ip r | grep "default via" | awk '{ print $3 }' | head -1 ) IP=$( ip a show dev "$IFACE" | grep global | grep -oP '\d{1,3}(.\d{1,3}){3}' | head -1 ) echo "IP|$IP" echo "gateway|$GW" echo "interface|$IFACE" # Certificates CERTS="$( grep "SSLCertificateFile /etc/letsencrypt/live/" /etc/apache2/sites-available/nextcloud.conf \ | sed 's|.*SSLCertificateFile /etc/letsencrypt/live/||;s|/fullchain.pem||' )" [[ "$CERTS" == "" ]] && CERTS=none echo "certificates|$CERTS" RESOLV="$( ping -c1 -w1 "$CERTS" 2>/dev/null | head -1 | grep -oP '\d{1,3}(.\d{1,3}){3}' )" echo "NAT loopback|$( [[ "$RESOLV" == "$IP" ]] && echo yes || echo no )" # Other echo "uptime|$( uptime | cut -f1 -d',' | awk '{ $1=""; $2=""; print }' | tr -d " " )" # License # # This script is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This script is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this script; if not, write to the # Free Software Foundation, Inc., 59 Temple Place, Suite 330, # Boston, MA 02111-1307 USA