diff options
author | Denis 'GNUtoo' Carikli <GNUtoo@no-log.org> | 2017-05-21 15:04:09 +0200 |
---|---|---|
committer | Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de> | 2017-05-23 23:14:23 +0200 |
commit | bb468524fa7cb9a378f824cf975de1d8aa35098f (patch) | |
tree | ef78f020eb8982e5370d388669ff17030b5e4096 | |
parent | afe0b27f7284f42ac761f8971aee0df5e9dfd782 (diff) | |
download | vendor_replicant-scripts-bb468524fa7cb9a378f824cf975de1d8aa35098f.tar.gz vendor_replicant-scripts-bb468524fa7cb9a378f824cf975de1d8aa35098f.tar.bz2 vendor_replicant-scripts-bb468524fa7cb9a378f824cf975de1d8aa35098f.zip |
screencap: Add naive SSH backend implementation.
This implementation is not efficent as each command will spawn a
new ssh command, which has considerable overhead and latency.
Example usage:
./screencap.sh -h root@192.168.43.1 -f OUTPUT.PNG
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
-rwxr-xr-x | screencap/screencap.sh | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/screencap/screencap.sh b/screencap/screencap.sh index 53284b3..7ed7d8c 100755 --- a/screencap/screencap.sh +++ b/screencap/screencap.sh @@ -18,13 +18,25 @@ set -e FFMEG="ffmpeg" -ADB="adb" +ADB="" FB_PATH="/dev/graphics/fb0" +SSH_HOST="" TMP_FB="fb_raw" TMP_FB_RS="fb_raw_rs" RECOVERY=false +ssh_wrapper() +{ + if [ "$1" = "shell" ] ; then + shift 1 + ssh "${SSH_HOST}" "su -c \"$@\"" + elif [ "$1" = "pull" ] ; then + shift 1 + scp ${SSH_HOST}:$@ + fi +} + print_usage () { echo echo "Usage: $0 [OPTIONS] -f OUTPUT.PNG" @@ -33,6 +45,7 @@ print_usage () { echo "Options:" echo "-r, --recovery Device is booted in recovery mode" echo "-s, --screen-size Specify screen size (mandatory in recovery mode)" + echo "-h, --ssh-host Connect to the given host through SSH" echo } @@ -66,7 +79,8 @@ take_screenshot () { PIX_FMT="rgb565" fi - $ADB pull $FB_PATH $TMP_FB + $ADB shell "cat $FB_PATH > /data/local/tmp/$TMP_FB" + $ADB pull /data/local/tmp/$TMP_FB $TMP_FB dd bs=$BS count=$SCREEN_SIZE_Y if=$TMP_FB of=$TMP_FB_RS $FFMEG -vcodec rawvideo -f rawvideo -pix_fmt $PIX_FMT -s $SCREEN_SIZE \ @@ -91,6 +105,11 @@ do SCREEN_SIZE="$2" shift 2 ;; + -h|--ssh-host) + SSH_HOST="$2" + shift 2 + ;; + "") break ;; @@ -102,6 +121,12 @@ do esac done +if [ -z "${SSH_HOST}" ] ; then + ADB="adb" +else + ADB="ssh_wrapper" +fi + if [ "$OUTFILE" = "" ]; then echo "No output file specified" print_usage |