Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Script assumes that you have set up an SSH key with and authorized it on the router.
- # If your key requires a passphrase, use an agent. Otherwise, prepare to manually auth alot.
- # Where are we (should be OpenWRT dev folder)
- Z_WRT=/home/zefie/dev/openwrt
- # Where is opkg-utils? (https://git.yoctoproject.org/cgit/cgit.cgi/opkg-utils)
- Z_OPKG="${Z_WRT}/opkg-utils"
- # Where on the Router should we put our repo?
- Z_DEST=/root/.localopkg/
- # Where is the router on the network?
- Z_ROUTER=192.168.11.1
- # What model (as defined by OpenWRT) are we building for? (Used for pkg directory)
- Z_MODEL=ipq806x
- # What packages should we import? [Local repo does not have priority over OpenWRT Public repo by default]
- Z_PACKAGES=(
- tgt
- luci-theme-rosy
- )
- # Temporary staging directory (removed after task unless script is run with any argument)
- # Should not need to change
- Z_STAGE="zstaging"
- # Vanity style to make our notice stand out from other text
- Z_PRE=" * "
- ### END CONFIG ###
- if [ ! -d "${Z_WRT}/staging_dir/packages/${Z_MODEL}" ]; then
- echo "${Z_PRE}ERR: Package directory does not exist. Did you build?"
- exit;
- fi
- Z_KEY="${Z_WRT}/key-build"
- echo "${Z_PRE}Staging mini local repo..."
- rm -rf "${Z_WRT}/${Z_STAGE}"
- mkdir "${Z_WRT}/${Z_STAGE}"
- for P in ${Z_PACKAGES[@]}; do
- cp "${Z_WRT}/staging_dir/packages/${Z_MODEL}/${P}_"*.ipk "${Z_WRT}/${Z_STAGE}";
- RES=$?
- if [ ${RES} -ne 0 ]; then
- echo "${Z_PRE}${P}: Failed";
- else
- echo "${Z_PRE}${P}: Success";
- fi
- done;
- #cd "${Z_WRT}/${Z_STAGE}"
- if [ $(ls -1 | wc -l) -eq 0 ]; then
- echo "${Z_PRE}ERR: No packages in staging directory... nothing more to do.";
- else
- "${Z_OPKG}/opkg-make-index" -f "${Z_WRT}/${Z_STAGE}" > "${Z_WRT}/${Z_STAGE}/Packages"
- gzip -9nc "${Z_WRT}/${Z_STAGE}/Packages" > "${Z_WRT}/${Z_STAGE}/Packages".gz
- "${Z_WRT}/staging_dir/host/bin/usign" -S -m "${Z_WRT}/${Z_STAGE}/Packages" -s "${Z_KEY}" -x "${Z_WRT}/${Z_STAGE}/Packages.sig"
- RES=$?
- if [ ${RES} -ne 0 ]; then
- echo "${Z_PRE}Signing failed";
- else
- echo "${Z_PRE}Signing successful";
- fi
- #cd ..
- echo "${Z_PRE}Staging to ${Z_ROUTER}"
- Z_RES=$(ssh "root@${ROUTER}" -- ls -1 "${Z_DEST}/" 2>&1)
- if [ $(echo "${Z_RES}" | grep -i "No such file" | wc -l) -eq 0 ]; then
- echo "${Z_PRE} - Clearing old repo"
- ssh "root@${Z_ROUTER}" -- rm -rf "${Z_DEST}"
- fi
- echo "${Z_PRE} - Staging new repo"
- ssh "root@${Z_ROUTER}" -- mkdir "${Z_DEST}"
- scp -r "${Z_WRT}/${Z_STAGE}/"* "root@${Z_ROUTER}:${Z_DEST}"
- Z_KEYID=$("${Z_WRT}/staging_dir/host/bin/usign" -F -s "${Z_KEY}")
- if [ $(echo "${Z_RES}" | grep -i "No such file" | wc -l) -gt 0 ]; then
- echo "${Z_PRE}Staging local build key ${Z_KEYID} to ${Z_ROUTER}"
- scp -r "${Z_KEY}.pub" "root@${Z_ROUTER}:/etc/opkg/keys/${Z_KEYID}"
- else
- echo "${Z_PRE}Local build key ${Z_KEYID} exists on ${Z_ROUTER}"
- fi
- fi
- if [ -z "${1}" ]; then
- rm -rf "${Z_STAGE}"
- fi
- echo "${Z_PRE}Done"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement