Looks like you can use Darling to run MacOS command line applications in Linux.
Cambium Routers Command Line Info
Helpful commands. Maybe?
- nvram_set
- nvram_get
- nvram_get 2860 Password
Looks like most of the configuration scripts are in /sbin
Web from the /etc_ro/web/admin/managment.php
<fieldset> <legend><script type="text/javascript">Capture(management.Web_Access)</script></legend> <table class="setting_block"> <tr> <td class="head" id="remoteWebLogin"><script>Capture(management.Remote_Web_Login)</script></td> <td> <select name="remote_web_login"> <option value="0" <% getCfgSelected("DBID_LAN_LOGIN_ONLY", "1"); %>><script>Capture(share.disable)</script></option> <option value="1" <% getCfgSelected("DBID_LAN_LOGIN_ONLY", "0"); %>><script>Capture(share.enable)</script></option> </select> </td> </tr> <tr id="WirelessHostLogin_tr"> <td class="head" id="WirelessHostLogin"><script>Capture(management.wireless_access_web)</script></td> <td> <select name="wireless_access_web"> <option value="0" <% getCfgSelected("wireless_access_web", "0"); %>><script>Capture(share.disable)</script></option> <option value="1" <% getCfgSelected("wireless_access_web", "1"); %>><script>Capture(share.enable)</script></option> </select> </td> </tr> <tr id="web_login_access"> <td class="head" id="WebLoginWay"><script>Capture(management.way_access_web)</script></td> <td> <select name="way_access_web"> <!-- <option value="https" selected = "selected" <% getCfgSelected("way_access_web", "https"); %>><script>Capture(management.https)</script></option> --> <option value="http" <% getCfgSelected("way_access_web", "http"); %>><script>Capture(management.http)</script></option> <option value="http&https" <% gethttphttpsSelected("way_access_web", "http&https"); %>><script>Capture(management.http_https)</script></option> </select> </td> </tr> <tr id="localport_tr"> <td class="head"><script>Capture(management.localWeb_Port)</script></td>
nvram_ nvram_get nvram_set nvram_get Usage: nvram_get [] [] command: rt2860_nvram_show - display rt2860 values in nvram rtdev_nvram_show - display 2nd ralink device values in nvram show - display values in nvram for gen - generate config file from nvram for renew - replace nvram values for with clear - clear all entries in nvram for platform: 2860 - rt2860 rtdev - 2nd ralink device file: - file name for renew command nvram_get show 2860 nvram_get show 2860
Trying to read data
nvram_get gen file tmp.txt Usage: nvram_get 2860 lan_ipaddr nvram_get 2860 lan_ipaddr 192.168.11.1 nvram_get 2860 http_wanport nvram_get 2860 http nvram_get 2860 httpd nvram_get 2860 remote_mgt_https nvram_get 2860 remote_mgt nvram_get 2860 telnet nvram_get 2860 remote_mgt nvram_get 2860 remote_ip nvram_get 2860 wan_ip
grep “nvram_get 2860” * | grep -i web
grep "nvram_get 2860" * | grep -i web check_goahead.sh:DBID_WEB_PORT=nvram_get 2860 DBID_WEB_PORT
common_lib.sh: local webport=nvram_get 2860 DBID_WEB_PORT
common_lib.sh: local webhttpsport=nvram_get 2860 DBID_WEB_SSL_PORT
common_lib.sh: local web_remote_ip=nvram_get 2860 WebRemoteLegalIP
common_lib.sh: wireless_access_web=nvram_get 2860 wireless_access_web
common_lib.sh: wanwebport=nvram_get 2860 DBID_WEB_PORT
common_lib.sh: local webhttpsport=nvram_get 2860 DBID_WEB_SSL_PORT
common_lib.sh: lanwebport=nvram_get 2860 lan_webport
common_lib.sh: local webport=nvram_get 2860 DBID_WEB_PORT
common_lib.sh: local webhttpsport=nvram_get 2860 DBID_WEB_SSL_PORT
common_lib.sh: local web_remote_ip=nvram_get 2860 WebRemoteLegalIP
common_lib.sh: local teluserpwd=nvram_get 2860 DBID_SUPER_WEB_PASSWORD
global.sh:webinit=nvram_get 2860 WebInit
internet.sh: pass=nvram_get 2860 DBID_SUPER_WEB_PASSWORD
lan.sh:lan_gw=nvram_get 2860 lan_gateway
#for debug, so remote host can access web route from another device in lan port nat.sh:webport=nvram_get 2860 DBID_WEB_PORT
set_ping_rule.sh: local pinglegaip=nvram_get 2860 WebAclList
storage.sh: admPW=nvram_get 2860 DBID_SUPER_WEB_PASSWORD
storage.sh: admPW=nvram_get 2860 DBID_SUPER_WEB_PASSWORD
storage.sh: admPW=nvram_get 2860 DBID_NORMAL_WEB_PASSWORD
storage.sh: admPW=nvram_get 2860 DBID_SUPER_WEB_PASSWORD
storage.sh: admPW=nvram_get 2860 DBID_NORMAL_WEB_PASSWORD
updown_make.sh: url=nvram_get 2860 websURLFilters
updown_make.sh: host=nvram_get 2860 websHostFilters
SSH
Not exactly sure if this does work, but seems like it should.
nvram_get SSH_SERVER_REMOTE_ENABLE
Default status
Enable
nvram_set SSH_SERVER_REMOTE_ENABLE 1
After running above command
Commit changes
nvram_get commit
Reboot
reboot
Change password
Seems like I am missing a step. Seems to change the password in the nvram, but does not actually change it permanently
Get current password
nvram_get 2860 Password admin
Set Password
nvram_set Password newpassword
Commit Changes and reboot
nvram_set commit reboot
Helpful links
https://forum.dd-wrt.com/phpBB2/viewtopic.php?t=29181
Uses some of the commands (i.e. nvram_get 2860 HostName )
https://github.com/jameshilliard/hlk-rm04-squashfs-root-1.78/blob/master/sbin/lan.sh
LibreNMS backup script
You should be able to copy and paste the following in a backup.sh file and then execute from cron. Should work out of the box, but you can change the backup directory and the teams.sh path if needed/wanted.
#!/bin/bash # LibreNMS backup script # Jan 1, 2019 lDate=`date +%Y%m%d-%H%M` # local date + hour minute dDate=`date +%Y%m%d` # todays date # If you have the teams.sh script, you can trigger a backup notification ALERT="/home/admin/teams.sh -b" # Directory to backup to bDir="/backup" bName="librenms_backup" # MySQL settings for tar and sqldump sqlDir="/var/lib/mysql" sqlDB="librenms" sqlUN="root" sqlPW="" LOG="${bDir}/${lDate}-${bName}.log" # Directory that contains data dDir="/opt/librenms" # tar LibreNMS dir # tar SQL dir "the whole thing with the innode files # sql dump of the db for extra redundancy if [ -d ${bDir} ]; then echo "backup dir exist, starting to backup" else echo "backup dir not available. Quiting" exit 1 fi ${ALERT} "Starting backup for ${bName} - `date`" systemctl stop mariadb httpd # LibreNMS data backup tar -zcvf ${bDir}/${lDate}-${bName}.tgz ${dDir} if [ $? -eq 0 ]; then echo "Tar succesfully backed up ${bDir}" else echo "Tar failed while trying to backup ${dDir}" echo " ${lDate} - Tar failed while trying to backup ${dDir}" >> ${LOG} ${ALERT} "${lDate} - Tar failed while trying to backup ${dDir}" fi # MySQL data backup tar -zcvf ${bDir}/${lDate}-${bName}-mysql.tgz ${sqlDir} if [ $? -eq 0 ]; then echo "Tar succesfully backed up ${sqlDir}" else echo "Tar failed while trying to backup ${sqlDir}" echo " ${lDate} - Tar failed while trying to backup ${sqlDir}" >> ${LOG} ${ALERT} "${lDate} - Tar failed while trying to backup ${sqlDir}" fi systemctl start mariadb httpd sleep 5 # SQL dump mysqldump -u ${sqlUN} -p'4rfvBHU8!' ${sqlDB} > ${bDir}/${lDate}-${bName}.sql if [ $? -eq 0 ]; then echo "MySQL DB dumped" else echo "Ran into error while doing sql dump" echo "${lDate} - Ran into error while doing sql dump" >> ${LOG} ${ALERT} "${lDate} - Ran into error while doing sql dump" fi echo "Removing old backups" if ( ls ${bDir} | grep -q ${dDate} );then find ${bDir}/* -prune -mtime +31 -exec rm {} \; else echo "Looks like there are no backup files! Aborting!!!" ${ALERT} "${lDate} - Error: find failed to find any backup files in backup dir. Aborting!!!" fi ${ALERT} "Finished backup for ${bName} - `date`"
MongoDB – dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Ran into an issue when trying to figure out some problems with UniFi and UniFi-Video. Upgrading both to the latest version was causing problems, because they both needed different versions of MongoDB.
Was getting the following error when trying to install MongoDB. Think I was trying to install Mongo following the instructions on their site and then it caused issues with apt.
dpkg: error processing archive /var/cache/apt/archives/mongodb-org-server_4.2.5_amd64.deb (--unpack):
trying to overwrite '/usr/bin/mongod', which is also in package mongodb-server-core 1:3.6.3-0ubuntu1.1
dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
Removed the following file
rm /etc/apt/sources.list.d/mongodb-org-4.2.list
and was able to use apt again to install MongoDB. Didn’t end up solving my problem because I technically needed two versions, but at least apt was being nice again. Ended up installing the UniFi controller docker container and can run both on the same server that way.
Install Factory Android Image on Pixel 1
Note: Some of these notes were saved in a draft and going off of memory. May not be entirely complete.
Basic Steps
Basic steps to flash the factory Android image back onto a Google Pixel 1
- Boot into the boot menu.
- Select recovery
- Select Apply update from ADB
- Sideload the OTA image downloaded below
- Reboot and resetup
Downloading OTA image
You can download the full OTA image from
https://developers.google.com/android/ota
TWRP – ADB Sideload
Go to https://twrp.me/Devices and download the correct version TWRP for your device.
Boot into boot loader menu
Plug you phone into a computer that has fastboot installed and run
sudo fastboot boot Downloads/twrp-3.3.0-0-sailfish.img
Note you may need to unlock your boot loader.
Your phone should now boot up into TWRP
Swipe to Allow Modifications
Select advanced
Then hit ADB Sideload.
Swipe to start the sideload and then sideload from your computer
adb sideload image.zip
More detailed explaination
https://www.cyanogenmods.org/adb-sideload-twrp/
Export Saved Firefox logins
https://support.mozilla.org/pt-BR/questions/1253828
Enable Dev Tools
Open up a new tab, go to about:config. Search for “devtools.chrome.enabled” and set to true
Now open up the Browser Console with “Ctrl + Shift + J” and past in the following
try { signons = Services.logins.getAllLogins(); var csv = '"Site","Username","Password"'; for (var i=0; i<signons.length; i++){ csv += '\n'; csv += signons[i].httpRealm ? ('"' + signons[i].hostname + ' (' + signons[i].httpRealm + ')","') : '"' + signons[i].hostname + '","'; csv += signons[i].username + '","' + signons[i].password + '"'; } console.log(csv); } catch (err) { console.log('Problem reading or outputting logins: '+err); }
Hit enter to run the command and return all the saved logins. You can copy and paste them, or export to file.
Briefly unavailable for scheduled maintenance. Check back in a minute
Looks like you can get the above error sometimes if you close out your tab too quickly, or there is some sort of plugin problem. Looks like you can resolve it by deleting the “.maintenance”
More info here
Auto renew SSL Cert with UniFi running in Docker
Setting up the SSL cert for UniFi service when running in docker is fairly easy to do. All you have to do is modify the UniFi SSL renew script to use the UniFi Docker directory and change the start and stop service to start and stop the Docker container. The script below should be ready to go.
Download, chmod +x it, and run, drop it in cron to auto renew.
In the below script, change (unifiDir=”/docker/unifi”) to your UniFi directory.
Note: this triggers calling the teams.sh script that will send an update to Microsoft Teams to let you know that the certs should be renewed. Check here for more info.
#!/usr/bin/env bash # Added support to do UniFi and UniFi controllers at the same time using the same cert. # Original script from https://git.sosdg.org/brielle/lets-encrypt-scripts/raw/branch/master/gen-unifi-cert.sh # More info here https://www.reddit.com/r/Ubiquiti/comments/43v23u/using_letsencrypt_with_the_unifi_controller/ # And here https://www.reddit.com/r/Ubiquiti/comments/43v23u/using_letsencrypt_with_the_unifi_controller/ # Modified script from here: https://github.com/FarsetLabs/letsencrypt-helper-scripts/blob/master/letsencrypt-unifi.sh # Modified by: Brielle Bruns <bruns@2mbit.com> # Download URL: https://source.sosdg.org/brielle/lets-encrypt-scripts # Version: 1.7 # Last Changed: 04/10/2020 # 04/10/2020: Changed directories and commands to work with a UniFi Docker install # 02/02/2016: Fixed some errors with key export/import, removed lame docker requirements # 02/27/2016: More verbose progress report # 03/08/2016: Add renew option, reformat code, command line options # 03/24/2016: More sanity checking, embedding cert # 10/23/2017: Apparently don't need the ace.jar parts, so disable them # 02/04/2018: LE disabled tls-sni-01, so switch to just tls-sni, as certbot 0.22 and later automatically fall back to http/80 for auth # 05/29/2018: Integrate patch from Donald Webster <fryfrog[at]gmail.com> to cleanup and improve tests # 09/26/2018: Change from TLS to HTTP authenticator # Location of LetsEncrypt binary we use. Leave unset if you want to let it find automatically # LEBINARY="/usr/src/letsencrypt/certbot-auto" # Change to your UniFi Docker directory unifiDir="/docker/unifi" PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" function usage() { echo "Usage: $0 -d <domain> [-e <email>] [-r] [-i]" echo " -d <domain>: The domain name to use." echo " -e <email>: Email address to use for certificate." echo " -r: Renew domain." echo " -i: Insert only, use to force insertion of certificate." } while getopts "hird:e:" opt; do case $opt in i) onlyinsert="yes";; r) renew="yes";; d) domains+=("$OPTARG");; e) email="$OPTARG";; h) usage exit;; esac done DEFAULTLEBINARY="/usr/bin/certbot /usr/bin/letsencrypt /usr/sbin/certbot /usr/sbin/letsencrypt /usr/local/bin/certbot /usr/local/sbin/certbot /usr/local/bin/letsencrypt /usr/local/sbin/letsencrypt /usr/src/letsencrypt/certbot-auto /usr/src/letsencrypt/letsencrypt-auto /usr/src/certbot/certbot-auto /usr/src/certbot/letsencrypt-auto /usr/src/certbot-master/certbot-auto /usr/src/certbot-master/letsencrypt-auto" if [[ ! -v LEBINARY ]]; then for i in ${DEFAULTLEBINARY}; do if [[ -x ${i} ]]; then LEBINARY=${i} echo "Found LetsEncrypt/Certbot binary at ${LEBINARY}" break fi done fi # Command line options depending on New or Renew. NEWCERT="--renew-by-default certonly" RENEWCERT="-n renew" # Check for required binaries if [[ ! -x ${LEBINARY} ]]; then echo "Error: LetsEncrypt binary not found in ${LEBINARY} !" echo "You'll need to do one of the following:" echo "1) Change LEBINARY variable in this script" echo "2) Install LE manually or via your package manager and do #1" echo "3) Use the included get-letsencrypt.sh script to install it" exit 1 fi if [[ ! -x $( which keytool ) ]]; then echo "Error: Java keytool binary not found." exit 1 fi if [[ ! -x $( which openssl ) ]]; then echo "Error: OpenSSL binary not found." exit 1 fi if [[ ! -z ${email} ]]; then email="--email ${email}" else email="" fi shift $((OPTIND -1)) for val in "${domains[@]}"; do DOMAINS="${DOMAINS} -d ${val} " done MAINDOMAIN=${domains[0]} if [[ -z ${MAINDOMAIN} ]]; then echo "Error: At least one -d argument is required" usage exit 1 fi if [[ ${renew} == "yes" ]]; then LEOPTIONS="${RENEWCERT}" else LEOPTIONS="${email} ${DOMAINS} ${NEWCERT}" fi if [[ ${onlyinsert} != "yes" ]]; then echo "Firing up standalone authenticator on TCP port 80 and requesting cert..." ${LEBINARY} --server https://acme-v01.api.letsencrypt.org/directory \ --agree-tos --standalone --preferred-challenges http ${LEOPTIONS} fi if [[ ${onlyinsert} != "yes" ]] && md5sum -c "/etc/letsencrypt/live/${MAINDOMAIN}/cert.pem.md5" &>/dev/null; then echo "Cert has not changed, not updating controller." exit 0 else echo "Cert has changed or -i option was used, updating controller..." TEMPFILE=$(mktemp) CATEMPFILE=$(mktemp) # Identrust cross-signed CA cert needed by the java keystore for import. # Can get original here: https://www.identrust.com/certificates/trustid/root-download-x3.html cat > "${CATEMPFILE}" <<'_EOF' -----BEGIN CERTIFICATE----- MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw 7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ -----END CERTIFICATE----- _EOF md5sum "/etc/letsencrypt/live/${MAINDOMAIN}/cert.pem" > "/etc/letsencrypt/live/${MAINDOMAIN}/cert.pem.md5" echo "Using openssl to prepare certificate..." cat "/etc/letsencrypt/live/${MAINDOMAIN}/chain.pem" >> "${CATEMPFILE}" openssl pkcs12 -export -passout pass:aircontrolenterprise \ -in "/etc/letsencrypt/live/${MAINDOMAIN}/cert.pem" \ -inkey "/etc/letsencrypt/live/${MAINDOMAIN}/privkey.pem" \ -out "${TEMPFILE}" -name unifi \ -CAfile "${CATEMPFILE}" -caname root docker container stop ${dockerContainerId} sleep 10 dockerContainerId=$(sudo docker container list | grep unifi-controller | awk '{print $1}') echo "Removing existing certificate from Unifi protected keystore..." keytool -delete -alias unifi -keystore ${unifiDir}/keystore -deststorepass aircontrolenterprise echo "Inserting certificate into Unifi keystore..." keytool -trustcacerts -importkeystore \ -deststorepass aircontrolenterprise \ -destkeypass aircontrolenterprise \ -destkeystore ${unifiDir}/keystore \ -srckeystore "${TEMPFILE}" -srcstoretype PKCS12 \ -srcstorepass aircontrolenterprise \ -alias unifi sleep 2 echo "Starting Unifi controllers..." docker container start ${dockerContainerId} ./teams.sh -b "$(hostname) - UniFi service is restarting, ssl cert should be renewed." echo "Done!" fi
Sonar Poller – PHP not installed
https://github.com/SonarSoftware/poller
Had some problems where the Sonar Poller Stopped working. Think some packages got removed so trying to run
sudo php /opt/poller/bin/checkForUpgrades.php
Returned a php error that it was not installed. Installed it with all the other dependencies to fix the problem.
Note that php version is different then it is on the github page. php7.2-cli is installed instead of php7.0-cli.
sudo apt-get install php7.2-cli php-zip php-snmp php-sqlite3 php-bcmath php-mbstring php-dom git fping snmp redis-server monit ntp snmp-mibs-downloader