banner



How To Download From Remote Linux Terminal To Desktop

Introduction: Sending Desktop Notifications

Sometimes it'south useful to go visual feedback from a script. For example, when script or cron task completes or when a long-running build fails, or when there is an urgent trouble during script execution. Desktop applications tin can practice this with popup notifications. But information technology can be done from a script too!

You tin use script commands to send yourself desktop notifications and reminders.

image

The below code has been written and tested on Linux. What about MacOS? Well... it can exist done too, with a fleck of endeavor.

Sending notifications from Linux final

To transport notifications from the Linux concluding, utilise the notify-send command. Run which at to come across if it's present. If not, install it with your packet manager of choice, for example

          sudo apt install notify-transport                  

A few examples of simple notifications:

          notify-ship "Dinner set up!" notify-send "Tip of the Day" "How nearly a nap?"                  

You lot can customize the notification with options such every bit urgency level, custom icon, etc. Find out more with homo notify-send. Yous can use a pocket-sized fix of HTML tags in the notification body, to requite your notifications nice bear on. On summit of that, URLs are rendered every bit clickable, for instance:

          notify-ship -u critical \   "Build failed!" \   "In that location were <b>123</b> errors. Click to see the results: http://buildserver/latest"                  

image

Sent notifications are picked up by the desktop surroundings and displayed merely like any other notification. They volition have the aforementioned consistent look, feel, and behaviour.

Combine notify-send with AT

We all know cron, used to schedule commands at regular intervals. Command AT is used to schedule single execution of a command at a specified time. If you run it like this:

          at 12:00                  

it volition starting time in interactive way, where you can enter commands to execute at given time. This isn't useful for scripts. Luckily, at accepts parameters from standard input, so we tin can utilise it this style:

          echo "npm run build" | at now + 1 minute echo "fill-in-db" | at xiii:00                  

There are many ways of specifying time. From absolute time such as 10:00 through relative time such as now + 2 hours to special times such equally noon or midnight. We tin combine it with notify-send to testify ourselves reminders at some time in time to come, for instance:

          repeat "notify-send 'Stop information technology and go home at present' 'Plenty for today.' -u disquisitional" | at now                  

image

REMIND command

Now, let's build a custom bash command for sending ourselves reminders. How about something as uncomplicated and human being-friendly as:

          remind "I'chiliad still here" now remind "Time to wake upwardly!" in five minutes remind "Dinner" in 1 hour remind "Take a break" at noon remind "Information technology's Fri pints time!" at 17:00                  

This is ameliorate than Alexa! How to go this goodness?

Run across the code below. It defined bash role called remind which supports the above syntax. The actual piece of work is done in the final two lines. The rest is responsible for help, parameter validation etc. which rougly matches the proportion of useful code vs necessary white-noise in any large application 😉 Save the code somewhere, for example in ~/bin/remind file and load the role in your .bashrc profile:

          source ~/bin/remind                  

Reload the terminal, then type remind to see the syntax. Enjoy!

          #!/usr/bin/env fustigate  office remind () {   local COUNT="$#"   local COMMAND="$1"   local MESSAGE="$i"   local OP="$ii"   shift 2   local WHEN="[electronic mail protected]"    # Display aid if no parameters or help control   if [[ $COUNT -eq 0 || "$Control" == "aid" || "$COMMAND" == "--assistance" || "$Command" == "-h" ]]; and so     echo "COMMAND"     repeat "    remind <message> <time>"     echo "    remind <command>"     echo     echo "Description"     echo "    Displays notification at specified time"     repeat     echo "EXAMPLES"     echo '    remind "Hello in that location" now'     echo '    remind "Time to wake up" in 5 minutes'     echo '    remind "Dinner" in 1 hour'     repeat '    remind "Have a break" at noon'     echo '    remind "Are you fix?" at 13:00'     echo '    remind list'     echo '    remind clear'     repeat '    remind help'     echo     render   fi    # Check presence of AT control   if ! which at >/dev/zippo; then     repeat "remind: AT utility is required simply not installed on your arrangement. Install it with your package manager of choice, for case 'sudo apt install at'."     return   fi    # Run commands: list, clear   if [[ $COUNT -eq 1 ]]; then     if [[ "$Command" == "list" ]]; then       at -l     elif [[ "$COMMAND" == "clear" ]]; then       at -r $(atq | cutting -f1)     else       echo "remind: unknown command $COMMAND. Type 'remind' without whatever parameters to meet syntax."     fi     render   fi    # Make up one's mind time of notification   if [[ "$OP" == "in" ]]; and then     local TIME="now + $WHEN"   elif [[ "$OP" == "at" ]]; then     local TIME="$WHEN"   elif [[ "$OP" == "now" ]]; then     local TIME="now"   else     echo "remind: invalid fourth dimension operator $OP"     return   fi    # Schedule the notification   echo "notify-transport '$Message' 'Reminder' -u disquisitional" | at $TIME ii>/dev/null   echo "Notification scheduled at $Time" }                  

Script Notifications on MacOS

Although there is no notify-send on MacOS, notifications tin be sent with ActionScript. For case:

          osascript -e 'display notification "Wake up!" with title "Reminder"'                  

Also, there'southward at available, so things should be easy? Well, not so. Sadly, MacOS is makes it increasingly difficult for power users to employ their powers ...

First, command at is disabled past default. Even if you run it, nothing will happen at scheduled time, because atrun daemon is disabled, and no user business relationship is immune to use it by default.

To let yourself to apply the command, edit /var/at/at.allow file and add your user name.

          sudo open -a textedit /var/at/at.allow                  

Then enable atrun daemon:

          sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist                  

Let'south try sending a notification:

          osascript -east 'brandish notification "Wake up!" with title "Reminder"' | at now                  

... and nothing happens. Why?

The daemon is not allowed to collaborate with the desktop, nor annihilation else for that thing. To fix this, go to System Preferences / Security & Privacy / Privacy / Total Deejay Access and add atrun to the list. The file is constitute at /usr/libexec/atrun path. Yous want to come across this:

image

... only how to select this file? MacOS won't display arrangement folders in the file selector, even if you've been asked to authenticate equally admin just a minute ago. I managed to circumvent it by calculation my `/usr` folder to list of favourite folders in Finder:

image

Final but not least, for some fifty-fifty this won't work. AT will not send these pesky notifications, period. It has something to do with script executing not in userspace. Y'all tin can notice more than information and solution here: https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard. This is what helps:

          # Install reattach-to-user-namespace utility brew install reattach-to-user-namespace # Run notification command every bit follows reattach-to-user-namespace osascript -due east 'display notification "Wake up!" with championship "Reminder"' | at now                  

Phew. Hopefully, it works for yous too, and you tin can use remind script on your Mac as well! Happy weekend!

image

Software License

Permission is hereby granted, gratis of charge, to any person obtaining a copy of software published on this website and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to employ, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following weather, unless stated explicitly otherwise:

  • The higher up copyright observe and this permission find shall be included in all copies or substantial portions of the Software.
  • The software is provided "as is", without warranty of any kind, express or unsaid, including merely not express to the warranties of merchantability, fitness for a detail purpose and noninfringement.
  • In no outcome shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the utilise or other dealings in the software.

50 O A D I N K
. . . comments & more!

How To Download From Remote Linux Terminal To Desktop,

Source: https://hackernoon.com/using-a-script-to-send-desktop-notifications-from-your-linux-terminal

Posted by: sampleancyingums.blogspot.com

0 Response to "How To Download From Remote Linux Terminal To Desktop"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel