Affichage des articles dont le libellé est script. Afficher tous les articles
Affichage des articles dont le libellé est script. Afficher tous les articles

mardi 20 février 2024

terraform variable <-> variables {script, gitlab-ci}

 (Ici, ce que vous voulez avant le lien) (Ici vous racontez votre vie)


terraform -> gitlab/script/etc.


src: https://stackoverflow.com/questions/75531444/how-to-use-terraform-variable-into-gitlab-ci-yml

  • Terraform : use an "output" 

locals {
toto = format ("${var.ressource_name_pattern}-something", "cloudfront-edge")
}

output "toto" {
 value = local.toto
}

  • Script: get output from terraform command

foobar = ${terraform output toto}



gitlab -> Terraform


Read environment variables in terraform variables, add TF_VAR_ in front of the variable name,

=> env / exported  "TF_VAR_toto" => variable.tf variable toto





terraform -> gitlab/script/etc. VARIABLE (in project settings)

src https://www.reddit.com/r/Terraform/comments/mwmq4e/comment/gvjo7g3/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button

     For example : create an EKS cluster & then create a variable with the KUBECONFIG data in another project which has the code for the apps & trigger the deployment of those apps into newly created cluster using that variable.

    - terragrunt run-all apply --terragrunt-non-interactive -auto-approve tfplan-$CI_COMMIT_SHA
    - terraform output kubectl_config > kubectl_config
    - |
      curl -s -XPUT -H "PRIVATE-TOKEN: $GITLAB_API_RW_PRIVATE_TOKEN" $CI_API_V4_URL/groups/$GROUP_ID/variables/KUBECONFIG \
      --form "value=$(cat kubectl_config)" \
      --form "variable_type=file" \
      --form "protected=false" \
      --form "masked=false" \ 
      --form "environment_scope=*" 






vendredi 8 août 2014

KSH eval / variable subtitution / variable test

from :http://b62.tripod.com/doc/docksh.htm

OTHER FUNCTIONALITIES


cmd1 || cmd2    exec cmd2 if cmd1 fail
cmd1 && cmd2    exec cmd2 if cmd1 is OK

V1=${V2:=V3}    Set V1 with the value of V2 if this is set else set the
                variable V1 with value of V3 (V3 could be a number).
                sh replacement:  if [ $V2 ] ; then
                                                V1=$V2
                                 else
                                                V1=$V3
                Example: DisplaySize=${LINES:24} ; Command=${Command:"cat"}


${V1:?word}     if V1 set  & V1!=null   ret $V1 else print word and exit
                  : ${V1:?"variable V1 not set on null"}
${V1:=word}     if V1 !set | V1==null   set V1=$word
${V1:-word}     if V1 set  & V1!=null   ret $V1 else ret word
${V1:+word}     if V1 set  & V1!=null   ret word else ret nothing
${V1##patt}
${V1#patt}      if patt are found at the begin of V1 return V1 whitout the patt
                else return V1
                V1="lspwd" ; ${V1#"ls"}  # exec pwd
${V1%%patt}
${V1%patt}      if patt are found at the end of V1 return V1 whitout the patt
                else return V1
                V1="lspwd" ; ${V1%"pwd"}  # exec ls 
 
 
from : http://www.well.ox.ac.uk/~johnb/comp/unix/ksh.html 
Variable Manipulations

Removing something from a variable

Variables that contain a path can very easily be stripped of it: ${name##*/} gives you just the filename.
Or if one wants the path: ${name%/*}. % takes it away from the left and # from the right.
%% and ## take the longest possibility while % and # just take the shortest one.

Replacing a variable if it does not yet exits

If we wanted $foo or if not set 4 then: ${foo:-4} but it still remains unset. To change that we use:
${foo:=4}

Exiting and stating something if variable is not set

This is very important if our program relays on a certain vaiable: ${foo:?"foo not set!"}

Just check for the variable

${foo:+1} gives one if $foo is set, otherwise nothing.
 

KSH : $- and Flags

Under Solaris and using the Korn Shell KSH, the $- allows access to the flags setted.
Example of how it changes when setting the debug mode '-x' :

# echo $-
ismC
# set -x
# echo $-
+ echo isxmC
isxmC
# set +x

man ksh informs us that (cf. http://www.lehman.cuny.edu/cgi-bin/man-cgi?ksh+1 for example)

  "   -  "         Correspond to the "Flags supplied to the shell on invocation  or  by the set command." and that "The current set of flags can be found in $- ":



  Parameters Set by Shell
     -          Flags supplied to the shell on invocation  or  by
                the set command.

   
     set [ _abCefhkmnopstuvx ] [ _o option ]... [ _A name ] [ arg
     ... ]

         The flags for this command have meaning as follows:

         -A          Array assignment. Unsets the  variable  name
                     and  assigns  values  sequentially  from the
                     list arg. If +A is used, the  variable  name
                     is not unset first.

         -a          All subsequent variables  that  are  defined
                     are automatically exported.

         -b          Causes the shell to notify  the  user  asyn-
                     chronously  of  background  job completions.
                     The following message is written to standard
                     error:

                       "[%d]%c %s%s\n", , , , \
                           

                     where the fields are as follows:

                            The character  +  identifies
                                     the  job  that would be used
                                     as a default for the  fg  or
                                     bg  utilities.  This job can
                                     also be specified using  the
                                     job_id %+ or %%. The charac-
                                     ter  -  identifies  the  job
                                     that    would   become   the
                                     default   if   the   current
                                     default  job  were  to exit;
                                     this job can also be  speci-
                                     fied  using  the  job_id %-.
                                     For other jobs,  this  field
                                     is  a  space  character.  At
                                     most one job can be  identi-
                                     fied  with + and at most one
                                     job can be  identified  with
                                     -. If there is any suspended
                                     job, then the current job is
                                     a  suspended  job.  If there
                                     are at least  two  suspended
                                     jobs,  then the previous job
                                     is also a suspended job.

                         A number that can be used to
                                     identify  the  process group
                                     to the  wait,  fg,  bg,  and
                                     kill  utilities. Using these
                                     utilities, the  job  can  be
                                     identified  by prefixing the
                                     job number with %.

                             Unspecified.

                           Unspecified.

                     When the shell notifies the user a  job  has
                     been completed, it can remove the job's pro-
                     cess ID from the list of those known in  the
                     current  shell  execution environment. Asyn-
                     chronous  notification  is  not  enabled  by
                     default.

         -C          Prevents existing files from being overwrit-
                     ten  by  the shell's > redirection operator.
                     The >| redirection operator  overrides  this
                     noclobber option for an individual file.

         -e          If a command has  a  non-zero  exit  status,
                     executes  the  ERR  trap,  if set, and exit.
                     This mode is  disabled  while  reading  pro-
                     files.
         -f          Disables file name generation.

         -h          Each command becomes a  tracked  alias  when
                     first encountered.

         -k          All variable assignment arguments are placed
                     in  the  environment for a command, not just
                     those that precede the command name.

         -m          Background jobs runs in a  separate  process
                     group and a line prints upon completion. The
                     exit status of background jobs  is  reported
                     in a completion message. On systems with job
                     control, this flag is  turned  on  automati-
                     cally for interactive shells.

         -n          Reads commands and  check  them  for  syntax
                     errors, but do not execute them. Ignored for
                     interactive shells.

         -o          Writes the current option settings to  stan-
                     dard output in a format that is suitable for
                     reinput  to  the  shell  as  commands   that
                     achieve the same option settings.

         -o          The following argument can  be  one  of  the
                     following option names:

                     allexport     Same as -a.

                     errexit       Same as -e.

                     bgnice        All background jobs are run at
                                   a  lower priority. This is the
                                   default mode.

                     emacs         Puts you  in  an  emacs  style
                                   in-line   editor  for  command
                                   entry.

                     gmacs         Puts you in a gmacs style  in-
                                   line editor for command entry.                     
                     ignoreeof     The shell does not exit onEOF.
                                   The command exit must be used.

                     keyword       Same as -k.

                     markdirs      All directory names  resulting
                                   from file name generation have
                                   a trailing / appended.

                     monitor       Same as -m.

                     noclobber     Prevents  redirection  >  from
                                   truncating   existing   files.
                                   Require >| to truncate a  file
                                   when  turned on. Equivalent to
                                   -C.

                     noexec        Same as -n.

                     noglob        Same as -f.

                     nolog         Do not save  function  defini-
                                   tions in history file.

                     notify        Equivalent to -b.

                     nounset       Same as -u.

                     privileged    Same as -p.

                     verbose       Same as -v.

                     trackall      Same as -h.

                     vi            Puts you in insert mode  of  a
                                   vi  style in-line editor until
                                   you hit escape character  033.
                                   This puts you in control mode.
                                   A return sends the line.
                     viraw         Each character is processed as
                                   it is typed in vi mode.

                     xtrace        Same as -x.

                     If no option name is supplied,  the  current
                     option settings are printed.

         -p          Disables processing  of  the  $HOME/.profile
                     file  and  uses  the  file /etc/suid_profile
                     instead of the ENV file.  This  mode  is  on
                     whenever  the  effective uid is not equal to
                     the real uid, or when the effective  gid  is
                     not  equal to the real gid. Turning this off
                     causes the effective uid and gid to  be  set
                     to the real uid and gid.

         -s          Sorts the positional parameters lexicograph-
                     ically.

         -t          Exits after reading and executing  one  com-
                     mand.

         -u          Treats unset parameters  as  an  error  when
                     substituting.

         -v          Prints shell input lines as they are read.

         -x          Prints commands and their arguments as  they
                     are executed.

         -           Turns off -x and -v flags and stops  examin-
                     ing arguments for flags.

         --          Does not change any of the flags. Useful  in
                     setting  $1  to a value beginning with -. If
                     no arguments follow this flag then the posi-
                     tional parameters are unset.

                     Using + rather than - causes these flags  to
                     be  turned off. These flags can also be used
                     upon invocation of the  shell.  The  current
                     set  of  flags can be found in $-. Unless -A
                     is specified, the  remaining  arguments  are
                     positional  parameters  and are assigned, in
                     order, to $1 $2 ....  If  no  arguments  are
                     given, the names and values of all variables
                     are printed on the standard output.                                  

dimanche 20 octobre 2013

Disque dur externe NTFS sous Mac OS X

 Utiliser un disque dur externe NTFS sous Mac OS X

Il existe plusieurs solution. Ayant déjà configuré les macports puisque je développe un peu, j'ai choisi celle ci, qui consiste, une fois installé fuxe4x et ntfs-3g

sudo port update
sudo port install fuse4x ntfs-3g

Fuse4x + NTFS-3G

sauver le fichier :
sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.orig

changer les droits d'exécution sur le script que l'on va créer :
sudo touch /sbin/mount_ntfs
sudo chmod 0755 /sbin/mount_ntfs
sudo chown 0:0 /sbin/mount_ntfs
sudo emacs /sbin/mount_ntfs
  
créer le nouveau script ainsi :
#!/bin/bash
VOLUME_NAME="${@:$#}"
VOLUME_NAME=${VOLUME_NAME#/Volumes/}
USER_ID=501
GROUP_ID=20
TIMEOUT=20
if [ `/usr/bin/stat -f "%u" /dev/console` -eq 0 ]; then
        USERNAME=`/usr/bin/defaults read /library/preferences/com.apple.loginwindow | /usr/bin/grep autoLoginUser | /usr/bin/awk '{ print $3 }' | /usr/bin/sed 's/;//'`
        if [ "$USERNAME" = "" ]; then
                until [ `stat -f "%u" /dev/console` -ne 0 ] || [ $TIMEOUT -eq 0 ]; do
                        sleep 1
                        let TIMEOUT--
                done
                if [ $TIMEOUT -ne 0 ]; then
                        USER_ID=`/usr/bin/stat -f "%u" /dev/console`
                        GROUP_ID=`/usr/bin/stat -f "%g" /dev/console`
                fi
        else
                USER_ID=`/usr/bin/id -u $USERNAME`
                GROUP_ID=`/usr/bin/id -g $USERNAME`
        fi
else
        USER_ID=`/usr/bin/stat -f "%u" /dev/console`
        GROUP_ID=`/usr/bin/stat -f "%g" /dev/console`
fi

/opt/local/bin/ntfs-3g \
         -o volname="${VOLUME_NAME}" \
         -o local \
         -o negative_vncache \
         -o auto_xattr \
         -o auto_cache \
         -o noatime \
         -o windows_names \
         -o user_xattr \
         -o inherit \
         -o uid=$USER_ID \
         -o gid=$GROUP_ID \
         -o allow_other \
         "$@" &> /var/log/ntfsmnt.log

exit $?;
 
 
 
Ca fonctionne plutôt bien. Mais vous noterez en particulier le problème posé par ce script en cas de multi-users sur la mac.
 Je n'ai pas encore eu le temps de voir si un `id -u` et `id -g` résolvait la question, mais il y a des chances que ce soit exécuté par root donc ça ne changerait rien ... :-/



Source : Description des autres solutions & original de celle-ci : http://fernandofig.wordpress.com/2011/08/08/ntfs-write-support-on-osx-lion-with-ntfs-3g-f/


Etape d'après : faire la même chose pour mes disques ext4 & ext3.


jeudi 16 février 2012

signaux et terminaux, stty

A la base, une simple question de la part d'une collègue : comment envoyer un SIGQUIT dans un terminal sous mac OS.
Une rapide recherche sur le net donne comme réponse "^\", contrairement à linux où c'est usuellement "^d" qui sert à cela.

Comment configurer cela, comment trouver cela ?


STTY(1)                          User Commands                         STTY(1)
NAME
       stty - change and print terminal line settings

SYNOPSIS
       stty [-F DEVICE | --file=DEVICE] [SETTING]...
       stty [-F DEVICE | --file=DEVICE] [-a|--all]
       stty [-F DEVICE | --file=DEVICE] [-g|--save]

DESCRIPTION
       Print or change terminal characteristics.

Qui chez moi par exemple (Ubuntu) me donne :
 
$ stty -a
speed 38400 baud; rows 40; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt 
Donc en fait "^d" envoie un "eof", pas un sig_quit...

mardi 25 mai 2010

Perl One-liner

Un des atouts de perl est la facilité avec laquelle il est possible d'écrire des scripts très compacts.

Un des défauts de perl est que rapidement quand le script devient un peu long.

Un bon compromis : faire des scripts très courts :-)


La page suivante présente un certain nombre d'exemple d'utilisation de perl sans passer par un script indépendant dans un fichier, et en utilisant plutôt une simple ligne ("One Liner") de code directement sur la ligne de commande :

http://sial.org/howto/perl/one-liner/

mardi 15 décembre 2009

Bash tricks ":", la commande qui ne fait rien

En bash, la commande ":" ("column", ou "deux points") est une commande qui prend autant d'arguments que l'on veut mais qui ne fait rien.

C'est en particulier pratique pour commenter dynamiquement du code.
Par exemple :


#!/bin/bash
#DEBUG=echo
DEBUG=:

if [ -f /tmp/toto ]; then
$DEBUG "/tmp/toto existe"
echo `date` >>/tmp/toto
else
$DEBUG "/tmp/toto n'existe pas"
echo "fichier cree a `date`" > /tmp/toto

fi


Exem

lundi 5 janvier 2009

Molly-guard (for ssh)

Installant sshd sur mon eee ubuntu m'a conseillé d'ajouter également «molly-guard», dont je n'avais jamais entendu parler.

Found on http://packages.ubuntu.com/fr/intrepid/molly-guard

protects machines from accidental shutdowns/reboots

The package installs a shell script that overrides the existing shutdown/reboot/halt/poweroff commands and first runs a set of scripts, which all have to exit successfully, before molly-guard invokes the real command.

One of the scripts checks for existing SSH sessions. If any of the four commands are called interactively over an SSH session, the shell script prompts you to enter the name of the host you wish to shut down. This should adequately prevent you from accidental shutdowns and reboots.

This shell script passes through the commands to the respective binaries in /sbin and should thus not get in the way if called non-interactively, or locally.

lundi 24 novembre 2008

Nautilus user scripts

Possibilité d'ajouter des scripts dans Nautilus (l'explorateur d'arborescence sous Gnome) :

Les ajouter dans

$HOME/.gnome2/nautilus-scripts/





Pour y acceder, après, c'est un menu Scripts (qui n'apparaît pas s'il n'y a rien dans le directory pré-cité), est présent lors du click droit sur la souris.




Par exemple :
$ cat $HOME/.gnome2/nautilus-scripts/Open\ Terminal\ Here

#!/bin/bash
# From Chris Picton
# Replaces a Script by Martin Enlund
# Modified to work with spaces in path by Christophe Combelles

# This script either opens in the current directory,
# or in the selected directory

base="`echo $NAUTILUS_SCRIPT_CURRENT_URI | cut -d'/' -f3- | sed 's/%20/ /g'`"
if [ -z "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then
dir="$base"
else
while [ ! -z "$1" -a ! -d "$base/$1" ]; do shift; done
dir="$base/$1"
fi

gnome-terminal --working-directory="$dir"





Quelques autres exemples ici.