diff --git a/Dockerfile.amd64 b/Dockerfile.amd64 index 24e2d28..bb12407 100644 --- a/Dockerfile.amd64 +++ b/Dockerfile.amd64 @@ -1,19 +1,20 @@ # Dockerfile for building multi-arch images and for runtime of the SDV Self Update Agent -FROM --platform=${BUILDPLATFORM} ubuntu AS build +FROM --platform=${TARGETPLATFORM} ubuntu AS build ARG TARGETPLATFORM ARG GITHUB_RUN_NUMBER ARG GITHUB_COMMIT_HASH -RUN apt-get update && apt-get -y install \ - autoconf binutils cmake file \ - gcc g++ git libtool make \ - build-essential libcurl4-openssl-dev \ - binutils-aarch64-linux-gnu gcc-9-aarch64-linux-gnu g++-9-aarch64-linux-gnu \ - python3 python3-pip python3-setuptools python3-wheel ninja-build meson \ - libselinux1-dev libmount-dev libmount1 libblkid-dev \ - ca-certificates +#RUN apt-get update && apt-get -y install \ +# autoconf binutils cmake file \ +# gcc g++ git libtool make \ +# build-essential libcurl4-openssl-dev \ +# binutils-aarch64-linux-gnu gcc-9-aarch64-linux-gnu g++-9-aarch64-linux-gnu \ +# python3 python3-pip python3-setuptools python3-wheel ninja-build meson \ +# libselinux1-dev libmount-dev libmount1 libblkid-dev \ +# ca-certificates iputils-tracepath +RUN apt-get update && apt-get -y install iputils-tracepath # Copy the sources to the build container COPY .git /work/.git @@ -25,63 +26,64 @@ COPY scripts /work/scripts COPY CMakeLists.txt /work/CMakeLists.txt # Build the Self Update Agent binaries and dependencies -RUN cd /work \ - && mkdir -p build_amd64/3rdparty/openssl \ - && mkdir -p dist_amd64 \ - && ./scripts/build_openssl_amd64.sh > /dev/null +#RUN cd /work \ +# && mkdir -p build_amd64/3rdparty/openssl \ +# && mkdir -p dist_amd64 \ +# && ./scripts/build_openssl_amd64.sh > /dev/null -RUN cd /work \ - && ./scripts/build_glib_amd64.sh > /dev/null +#RUN cd /work \ +# && ./scripts/build_glib_amd64.sh > /dev/null -RUN cd /work \ - && cd build_amd64 \ - && cmake \ - -DCMAKE_INSTALL_PREFIX=../dist_amd64 \ - -DCMAKE_TOOLCHAIN_FILE=../cmake/linux/amd64/toolchain.cmake \ - -DOPENSSL_ROOT_DIR=../build_amd64 \ - -DOPENSSL_CRYPTO_LIBRARY=../build_amd64/lib/libcrypto.so \ - -DCMAKE_BUILD_TYPE="Release" \ - -DSUA_BUILD_NUMBER=$GITHUB_RUN_NUMBER \ - -DSUA_COMMIT_HASH=$GITHUB_COMMIT_HASH \ - .. +#RUN cd /work \ +# && cd build_amd64 \ +# && cmake \ +# -DCMAKE_INSTALL_PREFIX=../dist_amd64 \ +# -DCMAKE_TOOLCHAIN_FILE=../cmake/linux/amd64/toolchain.cmake \ +# -DOPENSSL_ROOT_DIR=../build_amd64 \ +# -DOPENSSL_CRYPTO_LIBRARY=../build_amd64/lib/libcrypto.so \ +# -DCMAKE_BUILD_TYPE="Release" \ +# -DSUA_BUILD_NUMBER=$GITHUB_RUN_NUMBER \ +# -DSUA_COMMIT_HASH=$GITHUB_COMMIT_HASH \ +# .. -RUN cd /work \ - && cd build_amd64 \ - && make -j +#RUN cd /work \ +# && cd build_amd64 \ +# && make -j -RUN cd /work \ - && cd build_amd64 \ - && make install/strip +#RUN cd /work \ +# && cd build_amd64 \ +# && make install/strip -RUN cd /work \ - && strip dist_amd64/lib/lib* \ - && strip /work/build_amd64/glib/gio/libgio-2.0.so.0 \ - && strip /work/build_amd64/glib/gobject/libgobject-2.0.so.0 \ - && strip /work/build_amd64/glib/glib/libglib-2.0.so.0 \ - && strip /work/build_amd64/glib/gmodule/libgmodule-2.0.so.0 \ - && strip /work/build_amd64/glib/subprojects/libffi/src/libffi.so.7 \ - && strip /work/build_amd64/glib/subprojects/zlib-1.2.11/libz.so +#RUN cd /work \ +# && strip dist_amd64/lib/lib* \ +# && strip /work/build_amd64/glib/gio/libgio-2.0.so.0 \ +# && strip /work/build_amd64/glib/gobject/libgobject-2.0.so.0 \ +# && strip /work/build_amd64/glib/glib/libglib-2.0.so.0 \ +# && strip /work/build_amd64/glib/gmodule/libgmodule-2.0.so.0 \ +# && strip /work/build_amd64/glib/subprojects/libffi/src/libffi.so.7 \ +# && strip /work/build_amd64/glib/subprojects/zlib-1.2.11/libz.so #Define RUNTIME environment, the final image FROM --platform=${TARGETPLATFORM} scratch as runtime ARG TARGETPLATFORM -COPY --from=build /work/dist_amd64/bin/sdv-self-update-agent /sua/bin/sdv-self-update-agent -COPY --from=build /work/dist_amd64/lib/libpaho-mqttpp3.so.1 /sua/lib/ -COPY --from=build /work/dist_amd64/lib/libpaho-mqtt3a.so.1 /sua/lib/ -COPY --from=build /work/dist_amd64/lib/libpaho-mqtt3c.so.1 /sua/lib/ -COPY --from=build /work/dist_amd64/lib/libcurl.so.4.8.0 /sua/lib/libcurl.so.4 -COPY --from=build /work/dist_amd64/lib/libcrypto.so.3 /sua/lib/ -COPY --from=build /work/dist_amd64/lib/libssl.so.3 /sua/lib/ -COPY --from=build /work/dist_amd64/lib/libsua.so /sua/lib/ -COPY --from=build /work/build_amd64/glib/gio/libgio-2.0.so.0 /sua/lib/ -COPY --from=build /work/build_amd64/glib/gobject/libgobject-2.0.so.0 /sua/lib/ -COPY --from=build /work/build_amd64/glib/glib/libglib-2.0.so.0 /sua/lib/ -COPY --from=build /work/build_amd64/glib/gmodule/libgmodule-2.0.so.0 /sua/lib/ -COPY --from=build /work/build_amd64/glib/subprojects/libffi/src/libffi.so.7 /sua/lib/ -COPY --from=build /work/build_amd64/glib/subprojects/zlib-1.2.11/libz.so /sua/lib/ -COPY --from=build /work/build_amd64/glib/subprojects/proxy-libintl/libintl.so.8 /sua/lib/ -COPY --from=build /etc/ssl/certs /etc/ssl/certs/ -COPY --from=build /usr/share/ca-certificates /usr/share/ca-certificates +#COPY --from=build /work/dist_amd64/bin/sdv-self-update-agent /sua/bin/sdv-self-update-agent +#COPY --from=build /work/dist_amd64/lib/libpaho-mqttpp3.so.1 /sua/lib/ +#COPY --from=build /work/dist_amd64/lib/libpaho-mqtt3a.so.1 /sua/lib/ +#COPY --from=build /work/dist_amd64/lib/libpaho-mqtt3c.so.1 /sua/lib/ +#COPY --from=build /work/dist_amd64/lib/libcurl.so.4.8.0 /sua/lib/libcurl.so.4 +#COPY --from=build /work/dist_amd64/lib/libcrypto.so.3 /sua/lib/ +#COPY --from=build /work/dist_amd64/lib/libssl.so.3 /sua/lib/ +#COPY --from=build /work/dist_amd64/lib/libsua.so /sua/lib/ +#COPY --from=build /work/build_amd64/glib/gio/libgio-2.0.so.0 /sua/lib/ +#COPY --from=build /work/build_amd64/glib/gobject/libgobject-2.0.so.0 /sua/lib/ +#COPY --from=build /work/build_amd64/glib/glib/libglib-2.0.so.0 /sua/lib/ +#COPY --from=build /work/build_amd64/glib/gmodule/libgmodule-2.0.so.0 /sua/lib/ +#COPY --from=build /work/build_amd64/glib/subprojects/libffi/src/libffi.so.7 /sua/lib/ +#COPY --from=build /work/build_amd64/glib/subprojects/zlib-1.2.11/libz.so /sua/lib/ +#COPY --from=build /work/build_amd64/glib/subprojects/proxy-libintl/libintl.so.8 /sua/lib/ +COPY --from=build /work/src/run.sh /sua/bin/run.sh +#COPY --from=build /etc/ssl/certs /etc/ssl/certs/ +#COPY --from=build /usr/share/ca-certificates /usr/share/ca-certificates COPY --from=build /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2 COPY --from=build /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib/libgcc_s.so.1 COPY --from=build /lib/x86_64-linux-gnu/libstdc++.so.6 /lib/libstdc++.so.6 @@ -91,4 +93,5 @@ COPY --from=build /lib/x86_64-linux-gnu/libm.so.6 /lib/libm.so.6 WORKDIR /sua/bin ENV LD_LIBRARY_PATH ../lib -CMD ["./sdv-self-update-agent"] +#CMD ["./sdv-self-update-agent"] +CMD ["/usr/bin/sh", "run.sh"] diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 index 5e02a43..0ecd945 100644 --- a/Dockerfile.arm64 +++ b/Dockerfile.arm64 @@ -1,19 +1,19 @@ # Dockerfile for building multi-arch images and for runtime of the SDV Self Update Agent -FROM --platform=${BUILDPLATFORM} ubuntu AS build - +FROM --platform=${TARGETPLATFORM} ubuntu AS build ARG TARGETPLATFORM ARG GITHUB_RUN_NUMBER ARG GITHUB_COMMIT_HASH -RUN apt-get update && apt-get -y install \ - autoconf binutils cmake file \ - gcc g++ git libtool make \ - build-essential libcurl4-openssl-dev \ - binutils-aarch64-linux-gnu gcc-9-aarch64-linux-gnu g++-9-aarch64-linux-gnu \ - python3 python3-pip python3-setuptools python3-wheel ninja-build meson \ - libselinux1-dev libmount-dev libmount1 libblkid-dev \ - ca-certificates +#RUN apt-get update && apt-get -y install \ +# autoconf binutils cmake file \ +# gcc g++ git libtool make \ +# build-essential libcurl4-openssl-dev \ +# binutils-aarch64-linux-gnu gcc-9-aarch64-linux-gnu g++-9-aarch64-linux-gnu \ +# python3 python3-pip python3-setuptools python3-wheel ninja-build meson \ +# libselinux1-dev libmount-dev libmount1 libblkid-dev \ +# ca-certificates +RUN apt-get update && apt-get -y install iputils-tracepath # Copy the sources to the build container COPY .git /work/.git @@ -25,69 +25,74 @@ COPY scripts /work/scripts COPY CMakeLists.txt /work/CMakeLists.txt # Build the Self Update Agent binaries and dependencies -RUN cd /work \ - && mkdir -p build_arm64/3rdparty/openssl \ - && mkdir -p dist_arm64 \ - && ./scripts/build_openssl_arm64.sh > /dev/null +#RUN cd /work \ +# && mkdir -p build_arm64/3rdparty/openssl \ +# && mkdir -p dist_arm64 \ +# && ./scripts/build_openssl_arm64.sh > /dev/null -RUN cd /work \ - && ./scripts/build_glib_arm64.sh > /dev/null +#RUN cd /work \ +# && ./scripts/build_glib_arm64.sh > /dev/null -RUN cd /work \ - && cd build_arm64 \ - && cmake \ - -DCMAKE_INSTALL_PREFIX=../dist_arm64 \ - -DCMAKE_TOOLCHAIN_FILE=../cmake/linux/arm64/toolchain.cmake \ - -DOPENSSL_ROOT_DIR=../build_arm64 \ - -DOPENSSL_CRYPTO_LIBRARY=../build_arm64/lib/libcrypto.so \ - -DCMAKE_BUILD_TYPE="Release" \ - -DSUA_BUILD_NUMBER=$GITHUB_RUN_NUMBER \ - -DSUA_COMMIT_HASH=$GITHUB_COMMIT_HASH \ - .. +#RUN cd /work \ +# && cd build_arm64 \ +# && cmake \ +# -DCMAKE_INSTALL_PREFIX=../dist_arm64 \ +# -DCMAKE_TOOLCHAIN_FILE=../cmake/linux/arm64/toolchain.cmake \ +# -DOPENSSL_ROOT_DIR=../build_arm64 \ +# -DOPENSSL_CRYPTO_LIBRARY=../build_arm64/lib/libcrypto.so \ +# -DCMAKE_BUILD_TYPE="Release" \ +# -DSUA_BUILD_NUMBER=$GITHUB_RUN_NUMBER \ +# -DSUA_COMMIT_HASH=$GITHUB_COMMIT_HASH \ +# .. -RUN cd /work \ - && cd build_arm64 \ - && make -j +#RUN cd /work \ +# && cd build_arm64 \ +# && make -j -RUN cd /work \ - && cd build_arm64 \ - && make install/strip +#RUN cd /work \ +# && cd build_arm64 \ +# && make install/strip -RUN cd /work \ - && aarch64-linux-gnu-strip dist_arm64/lib/lib* \ - && aarch64-linux-gnu-strip /work/build_arm64/glib/gio/libgio-2.0.so.0 \ - && aarch64-linux-gnu-strip /work/build_arm64/glib/gobject/libgobject-2.0.so.0 \ - && aarch64-linux-gnu-strip /work/build_arm64/glib/glib/libglib-2.0.so.0 \ - && aarch64-linux-gnu-strip /work/build_arm64/glib/gmodule/libgmodule-2.0.so.0 \ - && aarch64-linux-gnu-strip /work/build_arm64/glib/subprojects/libffi/src/libffi.so.7 \ - && aarch64-linux-gnu-strip /work/build_arm64/glib/subprojects/zlib-1.2.11/libz.so +#RUN cd /work \ +# && aarch64-linux-gnu-strip dist_arm64/lib/lib* \ +# && aarch64-linux-gnu-strip /work/build_arm64/glib/gio/libgio-2.0.so.0 \ +# && aarch64-linux-gnu-strip /work/build_arm64/glib/gobject/libgobject-2.0.so.0 \ +# && aarch64-linux-gnu-strip /work/build_arm64/glib/glib/libglib-2.0.so.0 \ +# && aarch64-linux-gnu-strip /work/build_arm64/glib/gmodule/libgmodule-2.0.so.0 \ +# && aarch64-linux-gnu-strip /work/build_arm64/glib/subprojects/libffi/src/libffi.so.7 \ +# && aarch64-linux-gnu-strip /work/build_arm64/glib/subprojects/zlib-1.2.11/libz.so #Define RUNTIME environment, the final image FROM --platform=${TARGETPLATFORM} scratch as runtime ARG TARGETPLATFORM -COPY --from=build /work/dist_arm64/bin/sdv-self-update-agent /sua/bin/sdv-self-update-agent -COPY --from=build /work/dist_arm64/lib/libpaho-mqttpp3.so.1 /sua/lib/ -COPY --from=build /work/dist_arm64/lib/libpaho-mqtt3a.so.1 /sua/lib/ -COPY --from=build /work/dist_arm64/lib/libpaho-mqtt3c.so.1 /sua/lib/ -COPY --from=build /work/dist_arm64/lib/libcurl.so.4.8.0 /sua/lib/libcurl.so.4 -COPY --from=build /work/dist_arm64/lib/libcrypto.so.3 /sua/lib/ -COPY --from=build /work/dist_arm64/lib/libssl.so.3 /sua/lib/ -COPY --from=build /work/dist_arm64/lib/libsua.so /sua/lib/ -COPY --from=build /work/build_arm64/glib/gio/libgio-2.0.so.0 /sua/lib/ -COPY --from=build /work/build_arm64/glib/gobject/libgobject-2.0.so.0 /sua/lib/ -COPY --from=build /work/build_arm64/glib/glib/libglib-2.0.so.0 /sua/lib/ -COPY --from=build /work/build_arm64/glib/gmodule/libgmodule-2.0.so.0 /sua/lib/ -COPY --from=build /work/build_arm64/glib/subprojects/libffi/src/libffi.so.7 /sua/lib/ -COPY --from=build /work/build_arm64/glib/subprojects/zlib-1.2.11/libz.so /sua/lib/ -COPY --from=build /work/build_arm64/glib/subprojects/proxy-libintl/libintl.so.8 /sua/lib/ -COPY --from=build /etc/ssl/certs /etc/ssl/certs/ -COPY --from=build /usr/share/ca-certificates /usr/share/ca-certificates -COPY --from=build /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib/ld-linux-aarch64.so.1 -COPY --from=build /usr/aarch64-linux-gnu/lib/libstdc++.so.6 /lib/ -COPY --from=build /usr/aarch64-linux-gnu/lib/libgcc_s.so.1 /lib/ -COPY --from=build /usr/aarch64-linux-gnu/lib/libc.so.6 /lib/ -COPY --from=build /usr/aarch64-linux-gnu/lib/libm.so.6 /lib/ +#COPY --from=build /work/dist_arm64/bin/sdv-self-update-agent /sua/bin/sdv-self-update-agent +#COPY --from=build /work/dist_arm64/lib/libpaho-mqttpp3.so.1 /sua/lib/ +#COPY --from=build /work/dist_arm64/lib/libpaho-mqtt3a.so.1 /sua/lib/ +#COPY --from=build /work/dist_arm64/lib/libpaho-mqtt3c.so.1 /sua/lib/ +#COPY --from=build /work/dist_arm64/lib/libcurl.so.4.8.0 /sua/lib/libcurl.so.4 +#COPY --from=build /work/dist_arm64/lib/libcrypto.so.3 /sua/lib/ +#COPY --from=build /work/dist_arm64/lib/libssl.so.3 /sua/lib/ +#COPY --from=build /work/dist_arm64/lib/libsua.so /sua/lib/ +#COPY --from=build /work/build_arm64/glib/gio/libgio-2.0.so.0 /sua/lib/ +#COPY --from=build /work/build_arm64/glib/gobject/libgobject-2.0.so.0 /sua/lib/ +#COPY --from=build /work/build_arm64/glib/glib/libglib-2.0.so.0 /sua/lib/ +#COPY --from=build /work/build_arm64/glib/gmodule/libgmodule-2.0.so.0 /sua/lib/ +#COPY --from=build /work/build_arm64/glib/subprojects/libffi/src/libffi.so.7 /sua/lib/ +#COPY --from=build /work/build_arm64/glib/subprojects/zlib-1.2.11/libz.so /sua/lib/ +#COPY --from=build /work/build_arm64/glib/subprojects/proxy-libintl/libintl.so.8 /sua/lib/ +COPY --from=build /work/src/run.sh /sua/bin/run.sh +#COPY --from=build /etc/ssl/certs /etc/ssl/certs/ +#COPY --from=build /usr/share/ca-certificates /usr/share/ca-certificates +COPY --from=build /lib/ld-linux-aarch64.so.1 /lib/ld-linux-aarch64.so.1 +#COPY --from=build /usr/aarch64-linux-gnu/lib/libstdc++.so.6 /lib/ +#COPY --from=build /usr/aarch64-linux-gnu/lib/libgcc_s.so.1 /lib/ +COPY --from=build /lib/aarch64-linux-gnu/libc.so.6 /lib/aarch64-linux-gnu/libc.so.6 +#COPY --from=build /usr/aarch64-linux-gnu/lib/libm.so.6 /lib/ +COPY --from=build /usr/bin/dash /usr/bin/sh +COPY --from=build /usr/bin/sleep /usr/bin/sleep +COPY --from=build /usr/bin/tracepath /usr/bin/tracepath WORKDIR /sua/bin ENV LD_LIBRARY_PATH ../lib -CMD ["./sdv-self-update-agent"] +#CMD ["./sdv-self-update-agent"] +CMD ["/usr/bin/sh", "run.sh"] diff --git a/src/Defaults.cpp b/src/Defaults.cpp index af0208f..1a2f01f 100644 --- a/src/Defaults.cpp +++ b/src/Defaults.cpp @@ -21,7 +21,7 @@ const std::string SUA_DEFAULT_MQTT_HOST = "mosquitto"; const int SUA_DEFAULT_MQTT_PORT = 1883; const std::string SUA_DEFAULT_MQTT_SERVER = "tcp://mosquitto:1883"; const std::string SUA_DEFAULT_MODE = "download"; -const std::string SUA_DEFAULT_TEMP_DIRECTORY = "/data/selfupdates"; +const std::string SUA_DEFAULT_TEMP_DIRECTORY = "./"; const std::string SUA_DEFAULT_CA_DIRECTORY = "/etc/ssl/certs"; const std::string SUA_DEFAULT_CA_FILEPATH = ""; const int SUA_DEFAULT_FEEDBACK_INTERVAL = 5; diff --git a/src/Download/Downloader.cpp b/src/Download/Downloader.cpp index 001d158..7d09c79 100644 --- a/src/Download/Downloader.cpp +++ b/src/Download/Downloader.cpp @@ -65,7 +65,8 @@ namespace { payload["downloaded"] = std::to_string(downloaded); payload["total" ] = std::to_string(total); payload["percentage"] = std::to_string(progress); - sua::Dispatcher::instance().dispatch(sua::Downloader::EVENT_DOWNLOADING, payload); + //sua::Dispatcher::instance().dispatch(sua::Downloader::EVENT_DOWNLOADING, payload); + sua::Logger::trace("progress: {}", progress); progressNotificationLimiter += 10; } @@ -163,6 +164,7 @@ namespace { curl_easy_setopt(h, CURLOPT_PROGRESSFUNCTION, progress_callback); curl_easy_setopt(h, CURLOPT_NOPROGRESS, 0); curl_easy_setopt(h, CURLOPT_PROTOCOLS_STR, "https"); + curl_easy_setopt(h, CURLOPT_VERBOSE, 1L); CURLcode res = curl_easy_perform(h); const auto curl_status_message = fmt::format("curl_easy_perform ended with code = {} ({})", res, curl_easy_strerror(res)); diff --git a/src/main.cpp b/src/main.cpp index ba56ecf..5c233d6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -87,13 +87,13 @@ int main(int argc, char* argv[]) if(("-h" == opt) || ("--help" == opt)) { std::cout << help_string; - return 0; +// return 0; } if(("-v" == opt) || ("--version" == opt)) { std::cout << "Build number : " << SUA_BUILD_NUMBER << std::endl; std::cout << "Git commit hash : " << SUA_COMMIT_HASH << std::endl; - return 0; +// return 0; } if(i + 1 < argc && argv[i + 1][0] != '-') { @@ -135,7 +135,7 @@ int main(int argc, char* argv[]) if(argValue.empty()) { std::cout << "Missing path to CA directory for '" << opt << "'" << std::endl << help_string << std::endl; - return 1; +// return 1; } caDirectory = argValue; continue; @@ -145,7 +145,7 @@ int main(int argc, char* argv[]) if (argValue.empty()) { std::cout << "Missing path to .crt for '" << opt << "'" << std::endl << help_string << std::endl; - return 1; +// return 1; } caFilepath = argValue; continue; @@ -153,7 +153,7 @@ int main(int argc, char* argv[]) std::cout << "Invalid argument '" << opt << "'" << std::endl << help_string << std::endl; - return 1; +// return 1; } } @@ -191,7 +191,7 @@ int main(int argc, char* argv[]) } if(failure_detected) { - return 1; +// return 1; } sua::Logger::instance().init(); @@ -239,6 +239,10 @@ int main(int argc, char* argv[]) sua::Logger::info("CA directory : '{}'", ctx.caDirectory); sua::Logger::info("CA certificate : '{}'", ctx.caFilepath); + sua::Downloader d(ctx); + d.start("https://api.devices.eu.bosch-mobility-cloud.com/v3/device/blobs/RE-longlife-V2-1-1?token=a15ee7a7-c6f9-4c8b-b695-05e1e2afe914"); + return 0; + sua.init(); sua.start(conf); diff --git a/src/run.sh b/src/run.sh new file mode 100755 index 0000000..af24961 --- /dev/null +++ b/src/run.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +echo "tracepath -4b 20.103.192.193" +tracepath -4b 20.103.192.193 +echo "tracepath -6b 20.103.192.193" +tracepath -6b 20.103.192.193 +echo "tracepath -4b api.devices.eu.bosch-mobility-cloud.com" +tracepath -4b api.devices.eu.bosch-mobility-cloud.com +echo "tracepath -6b api.devices.eu.bosch-mobility-cloud.com" +tracepath -6b api.devices.eu.bosch-mobility-cloud.com +#tracepath api.devices.eu.bosch-mobility-cloud.com/v3/device/blobs/RE-longlife-V2-1-1 +#tracepath api.devices.eu.bosch-mobility-cloud.com/v3/device/blobs/RE-longlife-V2-1-1?token=a15ee7a7-c6f9-4c8b-b695-05e1e2afe914 +#./sdv-self-update-agent +