Created
August 21, 2025 17:09
-
-
Save ThinGuy/21818e7e4ef1e1ffd5d94bdbf6299777 to your computer and use it in GitHub Desktop.
Meshcommander Setup for Canonical Orangeboxes (run on node00)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Meshcommander (AMT Management) for Orangeboxes | |
| sudo apt update | |
| sudo apt install nodejs npm -fqy --auto-remove --purge; | |
| sudo mkdir -p /srv/mc; | |
| sudo chown -R $(id -un 1000):$(id -gn 1000) /srv/mc | |
| sudo find /srv/mc -type d -exec chmod u+rwx,g+rwx,o+rx {} \; -o -type f -exec chmod u+rw,g+rw,o+r {} \; | |
| (cd /srv/mc && npm install meshcommander); | |
| cat <<-MESHCMDR |sed -r 's/[ \t]+$//g'|sudo tee 1>/dev/null /etc/systemd/system/meshcommander.service | |
| [Unit] | |
| Description=Open source Intel® AMT management console | |
| Documentation=https://meshcentral.com/info/extra/mdtk/MeshCommanderUserGuide.pdf | |
| After=network.target | |
| [Service] | |
| Environment=NODE_PORT=3000 | |
| Type=simple | |
| User=$(id -un 1000) | |
| ExecStart=/usr/bin/node /srv/mc/node_modules/meshcommander/meshcommander.js --any | |
| Restart=on-failure | |
| [Install] | |
| WantedBy=multi-user.target | |
| MESHCMDR | |
| sudo systemctl daemon-reload | |
| sudo systemctl enable meshcommander.service | |
| sudo systemctl start meshcommander.service | |
| sudo systemctl status meshcommander.service | |
| # Fetch meshcmd | |
| [[ $(dpkg --print-architecture) = amd64 ]] && { sudo wget -qO /usr/local/bin/meshcmd https://meshcentral.com/executables/meshcmd-linux-x86-64; } | |
| [[ $(dpkg --print-architecture) = arm64 ]] && { sudo wget -qO /usr/local/bin/meshcmd https://meshcentral.com/executables/meshcmd-linux-arm-64; } | |
| sudo chmod +x /usr/local/bin/meshcmd | |
| mc-computer-list() { | |
| [[ ${@} =~ -q ]] && { local Q="1>/dev/null"; } || { local Q=""; } | |
| local OB_NUM="${HOSTNAME//[A-Za-z.]}" | |
| (printf "{\n \x22webappversion\x22: \x220.9.5\x22,\n \x22computers\x22: [\n" | |
| for Y in {10..20};do | |
| local NN=$(printf '%02d\n' $((${Y}-10))) | |
| [[ ${Y} -eq 10 && $(command 2>/dev/null -v meshcmd) ]] && { local NI=$(sudo meshcmd amtinfo 2>/dev/null|awk '/^Wired/{gsub(/\r/,"",$NF);print $5}'); } || { local NI="172.27.$((10#${OB_NUM})).${Y}"; }; | |
| printf " {\n \x22name\x22: \x22amtnode${NN}ob${OB_NUM}\x22,\n \x22host\x22: \x22${NI}\x22,\n \x22tags\x22: \x22OrangeBox${OB_NUM},ob${OB_NUM},amtnode${NN},node${NN}ob${OB_NUM}\x22,\n \x22user\x22: \x22admin\x22,\n \x22pass\x22: \x22Password1+\x22,\n \x22tls\x22: 0\n }" | |
| [[ ${Y} = 20 ]] && { printf "\n"; } || { printf ",\n"; } | |
| done; | |
| printf -- ' ]\n}\n')|tee ~/meshcommander-ob${OB_NUM}.json ${Q} | |
| printf "\n\n\e[0;38;2;0;255;0mSuccess\x21\e[0m Computer list for Meshcommand located @ ~/meshcommander-ob${OB_NUM}.json\n\n\n"; | |
| };export -f mc-computer-list | |
| # Create a json list to import into meshcommander | |
| mc-computer-list |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment