Προς το περιεχόμενο

[INFO] Η δύναμη της Κονσόλας


Manos-Sx

Προτεινόμενες αναρτήσεις

1) Ναι αυτό θα δουλέψει ή διαφορετικά μπορείς να δηλώσεις για input file το pseudo file "-" και να κάνεις redirect το περιεχόμενο ενός αρχείου στο stdin που σημαίνει αυτό το ιδιέταιρο αρχείο. Δηλαδή:

>crontab - < cat filename

 

2) Γι αυτήν την περίπτωση εξαρτάται ακριβώς πως θέλεις να το κάνεις. Αν είναι πάντα η δεύτερη γραμμή που θέλεις ή αν είναι πάντα η τελευταία ή αν θέλεις να λές εσύ στο script ποιά γραμμή θέλεις να σβήνεται. Κατ' αρχάς πρέπει να κάνεις cat το cromtab και να φιλτράρεις τις γραμμές που είναι σχόλια με ένα RE σαν αυτό:

> $iL =~ !m/^#/

Μετά με έναν counter μετράς ποιος αριθμός γραμμής είναι αυτός που διάβασες και ανάλογα με τις προυποθέσεις που σου είπα επάνω κάνεις αυτό τη γραμμή echo στο stdit της crontab ή αν είναι ο αριθμός γραμμής που σε ενδιαφέρει τον αγνοείς.

Σε λίγο μπορώ να σου ανεβάσω ένα script που θα το κάνει εκτός αν θές να το κάνεις για εξάσκηση.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 889
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Στο 1) με μπερδέψατε λίγο.

Όταν εκτελώ με sudo πειράζεται μόνο το αρχείο του root αν δεν δηλώσω κάποιον χρήστη, έτσι?

Λοιπόν όπως είπαμε έχω ένα ήδη υπάρχον job στον cron:

># router auto reboot
5,15,25,35,45,55 * * * *        /usr/bin/routerreboot.sh
# This file was written by KCron. Copyright (c) 1999, Gary Meyer
# Although KCron supports most crontab formats, use care when editing.
# Note: Lines beginning with "#\" indicates a disabled task.

 

Τώρα θέλω να πάω να του βάλω και αυτό το οποίο βρίσκετε στο αρχείο tsa.txt (χωρίς να πειραχτούν τα υπόλοιπα jobs):

>5,15,25,35,45,55 * * * *        /usr/bin/lalalala.sh

οπότε εκτελώ:

>cat <(sudo crontab -l) tsa.txt | crontab -

ή ???

>sudo crontab - < cat tsa.txt

 

Θα με βόλευε αντί για το αρχείο tsa.txt να έχω μια μεταβλητή η οποία έχει τιμή το job αν γίνετε.

 

 

Ωραία τώρα ας πούμε οτι πρόσθεσα το νέο job.

Αν θέλω να το σβήσω εκτελώ:

>crontab -l | sed 'σβήσε_ό,τι_θες' | crontab -

Συγκεκριμένα θέλω να σβήσω μόνο το job που έχει την λέξη "lalalala.sh"

(sed -e '/lalalala.sh/d' θα πρέπει να γίνει? )

 

Εκτελώντας τα παραπάνω υποθέτω οτι μπαίνουν αυτόματα σε εφαρμογή...ή όχι?

Σε περίπτωση σφάλματος θα μου εμφανιστεί το μήνυμα που λέει οτι έχω λάθος?

Καλά το τελευταίο θα το δοκιμάσω κιόλας...

 

Ευχαριστώ και πάλι για την βοήθεια. :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στο 1) με μπερδέψατε λίγο.

Όταν εκτελώ με sudo πειράζεται μόνο το αρχείο του root αν δεν δηλώσω κάποιον χρήστη, έτσι?

Ναι

 

Θα με βόλευε αντί για το αρχείο tsa.txt να έχω μια μεταβλητή η οποία έχει τιμή το job αν γίνετε.

Τότε μπορείς στο script σου να έχεις:

>
job="*/10 * * * * /bin/true
{
  crontab -l
  echo $job
} | crontab -

 

Ή ακόμα καλύτερα, να φτιάξεις μια συνάρτηση

>
add_cron_job(){
 { 
    crontab -l 
    echo $@
 } | crontab -
}

Και στη συνέχεια να την καλείς:

>
add_cron_job "$job"

 

Ωραία τώρα ας πούμε οτι πρόσθεσα το νέο job.

Αν θέλω να το σβήσω εκτελώ:

>crontab -l | sed 'σβήσε_ό,τι_θες' | crontab -

Συγκεκριμένα θέλω να σβήσω μόνο το job που έχει την λέξη "lalalala.sh"

(sed -e '/lalalala.sh/d' θα πρέπει να γίνει? )

Ναι, αυτό θα δουλέψει.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πάλι κόλλησα! :-D

 

Έχουμε την εντολή :

>sed 's/^name=.*/name="'"$a"'"/' -i "$0"

 

η οποία δουλεύει μαι χαρά αν εισάγω οτιδήποτε χαρακτήρες εκτός απο το "/".

Έλα που εγώ όμως θέλω στο a να εισάγω τιμές όπως:

/home

ή

/home /root /boot/grub

ktl.

Δηλαδή ένα ή περισσότερους καταλόγους...

 

Το σφάλμα που παίρνω είναι περίπου σαν και αυτό:

>sed: -e expression #1, char 50: unknown option to `s'

 

Έχω δοκιμάσει διάφορα αλλά πάλι τα ίδια, δεν καταφέρνω τίποτα αποτελεσματικό...

 

Κάποια βοήθεια?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πάλι κόλλησα! :-D

 

Έχουμε την εντολή :

>sed 's/^name=.*/name="'"$a"'"/' -i "$0"

 

η οποία δουλεύει μαι χαρά αν εισάγω οτιδήποτε χαρακτήρες εκτός απο το "/".

Έλα που εγώ όμως θέλω στο a να εισάγω τιμές όπως:

/home

ή

/home /root /boot/grub

ktl.

Δηλαδή ένα ή περισσότερους καταλόγους...

Δοκίμασε

>
sed "s,^name=.*,name=\"$a\","

(Με λίγο απλουστευμένα και τα εισαγωγικά)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

OK το βρήκα απο το link που μου είχες δώσει:

The usual delimiter that sed uses is /. However, sed allows other delimiters, such as %. This is useful when / is part of a replacement string, as in a file pathname. See Example 10-9 and Example 15-32.

 

Οπότε το έκανα έτσι:

>sed 's%^name=.*%name="'"$a"'"%' -i "$0"

 

:-)

 

Τώρα έχω ακόμα μια ερώτηση αν έχετε κάτι στο μυαλό σας.

Λοιπόν έχουμε την μεταβλητή:

a=/boot

και

b=/boot/grub

 

υπάρχει κάποιος τρόπος να τεστάρω αν το a είναι υποκατάλογος του b και το αντίθετο?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 4 εβδομάδες αργότερα...

Ένα script για να βρίσκει και να κατεβάζει κανείς υπότιτλους εύκολα από το greeksubs.com. Μπορεί να επεκταθεί ώστε να αναγνωρίζει αν το αρχείο που κατέβηκε είναι rar/zip ή κείμενο και να κάνει extract τους υπότιτλους. Το directory στο οποίο θα τρέξει το script πρέπει να είναι εγγράψιμο.

findsubs.txt

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

capthookb,

ωραίο το script σου, με βόλεψε. Έκανα μερικές μετατροπές λοιπόν για να γίνει λίγο πιο εύχρηστο. Τώρα υποστηρίζει τη λήψη πολλών αρχείων (ή όλων). Επιπλέον, το να σώζεις το αποτέλεσμα του query στο αρχείο index.html κάνοντας το overwrite δεν είναι καθόλου καλή ιδέα (πολύ εύκολα μπορεί κάποιος να χάσει έτσι κάποιο αρχείο με το ίδιο όνομα). Μια λύση είναι η χρήση ενός tempfile, π.χ. με

>
TMPFILE=`mktemp -t greeksubs.XXXXXX` || exit 1
...
rm -f "$TMPFILE"

Διαφορετικά, για περιπτώσεις που το μέγεθος των δεδομένων είναι μικρό, μπορείς να αποθηκεύσεις το αποτέλεσμα σε μια μεταβλητή, όπως επέλεξα εγώ.

 

Επίσης πρόσεξα ότι δεν επιστρέφει όσα αποτελέσματα και το search στο site, γιατί χρησιμοποιεί το initial, ενώ το search είναι διαθέσιμο μόνο με POST method. Στέλνω λοιπόν τα queries με POST (με το curl). Αν κάποιος προτιμάει την προηγούμενη συμπεριφορά, μπορεί να αντικαταστήσει τη γραμμή με το curl με την από πάνω (και να αποκαταστήσει το αρχικό SEARCHSEL).

 

Τέλος έβγαλα μερικά παραπανίσια grep, το διόρθωσα ώστε να υποστηρίζει ονόματα με spaces, και να μετατρέπει τους ελληνικούς χαρακτήρες από iso8859-7 σε utf8 (αν κάποιος δεν το θέλει αυτό μπορεί να κάνει comment out τις τρεις γραμμές μετά το 'which').

 

Η σύνταξη του script είναι bash-specific, και του sed GNU-specific. Απαιτούνται επιπλέον τα εργαλεία wget και curl.

 

Κάντε rename σε gs.sh, chmod +x και είστε έτοιμοι : Ρ

gs.sh.txt

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ε μα δεν άφησες και τίποτα όρθιο :) χεχε (πλάκα κάνω έτσι). Να φανταστείς εγώ χρησιμοποιούσα μια ακόμα απλούστερη έκδοση και έβαλα μερικούς ελέγχους ώστε να το ποστάρω εδώ. Επίσης θα μπορούσε να προστεθούν κι άλλα sites στην αναζήτηση π.χ insomnia. κτλ κτλ για όποιον έχει όρεξη και χρόνο.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 3 εβδομάδες αργότερα...

Χρειάστηκα το script του poscaman (thanks m8) και το τροποποίησα και λίγο... :-):-):-)

 

>
#!/bin/bash
#Image Width Converter

Black='\e0;30m'
Blue='\e0;34m'
Green='\e0;32m'
Cyan='\e0;36m'
Red='\e[0;31m'
Purple='\e[0;35m'
Brown='\e[0;33m'
Light_Gray='\e[0;37m'
Dark_Gray='\e[1;30m'
Light_Blue='\e[1;34m'
Light_Green='\e[1;32m'
Light_Cyan='\e[1;36m'
Light_Red='\e[1;31m'
Light_Purple='\e[1;35m'
Yellow='\e[1;33m'
White='\e[1;37m'

No_Color='\033[0m'

# clear;
DIMENSION="$1"
DIR="$2"

if [ -z $DIMENSION ] ; then
   echo
   echo
   echo -e "${Light_Green}Usage: imgresize DIMENSION DIRECTORY. e.g. imgresize 800"
   echo -e "${Light_Cyan}Example: imgresize 800"
   echo -e "${Light_Green}The DIRECTORY parameter is optional. If blank the curent dir is used.${No_Color}"
   echo
   exit	
fi

if [ -z $DIR ] ; then
   DIR=`pwd`
   echo "Current directory is used: $DIR"
   echo
fi

echo "Convert recurcively (y/n)?"
read yn
[ $yn != y ] && DEPTH="-maxdepth 1"
find $DIR $DEPTH -iname '*.jpg' -print0 | xargs -0 -I '\1' convert '\1' -resize $DIMENSION '\1'

# clear
echo
echo -e "${Light_Red}Successful recursive conversion:.JPG,.jpg, $DIMENSION width${No_Color}"

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ένα script για να βρίσκει και να κατεβάζει κανείς υπότιτλους εύκολα από το greeksubs.com. Μπορεί να επεκταθεί ώστε να αναγνωρίζει αν το αρχείο που κατέβηκε είναι rar/zip ή κείμενο και να κάνει extract τους υπότιτλους. Το directory στο οποίο θα τρέξει το script πρέπει να είναι εγγράψιμο.

wget: μη αναγνωρίσιμη επιλογή `--content-disposition'

Χρήση: wget [ΕΠΙΛΟΓΗ]... ...

 

Δοκιμάστε `wget --help' για περισσότερες επιλογές ρυθμίσεων.

Αυτό μου έβγαλε εμένα όταν το έτρεξα!!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...