sakuric 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +13 -0
- data/Gemfile +22 -0
- data/Gemfile.lock +60 -0
- data/HISTORY.yml +13 -0
- data/INSTALL +5 -0
- data/LICENSE +1 -0
- data/Makefile +19 -0
- data/Manifest +405 -0
- data/README.md +72 -0
- data/Rakefile +4 -0
- data/TODO +3 -0
- data/VERSION +1 -0
- data/bashrc +30 -0
- data/bashrc.d/00-functions.include +7 -0
- data/bashrc.d/01-sakura_checks.include +15 -0
- data/bashrc.d/02-uname.include +11 -0
- data/bashrc.d/80-ruby.include +4 -0
- data/bashrc.d/99-dirs.include +11 -0
- data/bashrc.d/aliases.include +20 -0
- data/bashrc.d/common.include +7 -0
- data/bashrc.d/local.d/README +1 -0
- data/bashrc.d/local.d/nothing.include +0 -0
- data/bashrc.d/uname.d/Darwin +6 -0
- data/bashrc.d/uname.d/Linux +0 -0
- data/bashrc.local.sample +11 -0
- data/bin/10 +7 -0
- data/bin/10times +7 -0
- data/bin/1every +22 -0
- data/bin/1everyN +22 -0
- data/bin/1suN +22 -0
- data/bin/2 +5 -0
- data/bin/act +24 -0
- data/bin/amarelo +2 -0
- data/bin/arancio +4 -0
- data/bin/arcobaleno +10 -0
- data/bin/bianco +3 -0
- data/bin/black +2 -0
- data/bin/brew-install +3 -0
- data/bin/cache +50 -0
- data/bin/cache3 +50 -0
- data/bin/cheorae +4 -0
- data/bin/colorastdouterr +37 -0
- data/bin/cp2desktop +3 -0
- data/bin/create-git-repo.sh +24 -0
- data/bin/csoe +37 -0
- data/bin/data +3 -0
- data/bin/derive +90 -0
- data/bin/dimmi +31 -0
- data/bin/dimmiora +4 -0
- data/bin/doppioni +48 -0
- data/bin/du- +9 -0
- data/bin/duplicates +48 -0
- data/bin/echodo +7 -0
- data/bin/ensure_line_present +82 -0
- data/bin/epoch2date +5 -0
- data/bin/fanout +100 -0
- data/bin/find-broken-symlink +26 -0
- data/bin/find-duplicates +48 -0
- data/bin/find-special-chars-within-filenames +12 -0
- data/bin/fix-terminal +5 -0
- data/bin/gce-create-centos-instance +5 -0
- data/bin/gce-create-custom-image +8 -0
- data/bin/gce-curl-get-instances-for-project +7 -0
- data/bin/gce-get-token +3 -0
- data/bin/gce-getproject-metadata +35 -0
- data/bin/gce-public-ip +4 -0
- data/bin/gcutil-fetch +36 -0
- data/bin/giallo +2 -0
- data/bin/git-clone-in-non-empty-dir +21 -0
- data/bin/git-ignore +3 -0
- data/bin/git-repos +98 -0
- data/bin/git-repos.py +99 -0
- data/bin/gitinfo +2 -0
- data/bin/google-spreadsheet-cat +40 -0
- data/bin/google_ips +5 -0
- data/bin/gray +3 -0
- data/bin/green +2 -0
- data/bin/grigio +3 -0
- data/bin/gsutil-debug-bucket +12 -0
- data/bin/gsutil-get-oauth2-token +4 -0
- data/bin/gugol-image +74 -0
- data/bin/hamachi-ubuntu-install +17 -0
- data/bin/head-1^-1 +5 -0
- data/bin/ifdownup +13 -0
- data/bin/immature/ok2 +25 -0
- data/bin/immature/twice-still-broken +9 -0
- data/bin/install-gic-repo +13 -0
- data/bin/install-sakura-on-debian-latest +6 -0
- data/bin/iphoto_big_files.sh +37 -0
- data/bin/itunes +140 -0
- data/bin/jason-xpath.rb +54 -0
- data/bin/jsawk +1128 -0
- data/bin/json-xpath.rb +54 -0
- data/bin/keepup +13 -0
- data/bin/lsof-top10 +3 -0
- data/bin/minicook +218 -0
- data/bin/mv2. +2 -0
- data/bin/mv2desktop +2 -0
- data/bin/mv2dropbox +2 -0
- data/bin/mv2here +2 -0
- data/bin/mvto +39 -0
- data/bin/nero +2 -0
- data/bin/never_as_root +18 -0
- data/bin/not +16 -0
- data/bin/ok +42 -0
- data/bin/orange +4 -0
- data/bin/pink +2 -0
- data/bin/polygen-dell +7 -0
- data/bin/polygen-heanet +6 -0
- data/bin/polygen-labs +4 -0
- data/bin/print_key_val +4 -0
- data/bin/rainbow +10 -0
- data/bin/recipe +19 -0
- data/bin/red +2 -0
- data/bin/remember-command +140 -0
- data/bin/remember-command.rb +140 -0
- data/bin/richelp +99 -0
- data/bin/ricorda-comando +140 -0
- data/bin/rosa +2 -0
- data/bin/rosso +2 -0
- data/bin/run-parts.sh +50 -0
- data/bin/sakura-check-version +48 -0
- data/bin/sakura-init.DRAFT +5 -0
- data/bin/sakura-version +2 -0
- data/bin/sano +5 -0
- data/bin/sbianca +3 -0
- data/bin/sblua +2 -0
- data/bin/setterm-reset +5 -0
- data/bin/sgialla +2 -0
- data/bin/sgrigia +2 -0
- data/bin/split +37 -0
- data/bin/split.rb +37 -0
- data/bin/srosa +1 -0
- data/bin/srossa +2 -0
- data/bin/strip-white-spaces +2 -0
- data/bin/stty-sane +5 -0
- data/bin/sudo^-1 +18 -0
- data/bin/sverda +6 -0
- data/bin/swift-saio-install.sh +336 -0
- data/bin/synergyc +0 -0
- data/bin/synergys +0 -0
- data/bin/syracuse.pl +29 -0
- data/bin/tail-n+2 +5 -0
- data/bin/tellme +31 -0
- data/bin/tellme-time +4 -0
- data/bin/timeout3 +91 -0
- data/bin/top5 +4 -0
- data/bin/trim +4 -0
- data/bin/trova-broken-symlink +26 -0
- data/bin/twice +5 -0
- data/bin/twice.rb +5 -0
- data/bin/ubuntu-install-hamachi64 +17 -0
- data/bin/ultimo +5 -0
- data/bin/upload.py +2380 -0
- data/bin/usleep +0 -0
- data/bin/varia +90 -0
- data/bin/verde +2 -0
- data/bin/vermelho +2 -0
- data/bin/vim-whereveritis +5 -0
- data/bin/viola +1 -0
- data/bin/virsh-list-all-vms.py +21 -0
- data/bin/virtualbox-manage +41 -0
- data/bin/weekend +12 -0
- data/bin/whattimeisit +4 -0
- data/bin/whereis-ip +5 -0
- data/bin/white +3 -0
- data/bin/whitefy +3 -0
- data/bin/yellow +2 -0
- data/bin/yellowfy +2 -0
- data/bin/zombies +25 -0
- data/docz/polygen/dell.grm +100 -0
- data/docz/polygen/frati.grm +85 -0
- data/docz/polygen/heanet.grm +54 -0
- data/docz/richelp/gcompute.yml +52 -0
- data/docz/richelp/gcutil.yml +52 -0
- data/docz/richelp/gmail.yml +2 -0
- data/docz/richelp/ruby.yml +81 -0
- data/docz/richelp/sakura.yml +20 -0
- data/docz/richelp/sql.yml +12 -0
- data/docz/richelp/ubuntu.yml +22 -0
- data/docz/richelp/yaml.yml +39 -0
- data/docz/richelp/yml.yml +39 -0
- data/etc/sakura/devel.yml +36 -0
- data/etc/synergy.conf.example +37 -0
- data/images/color-sample.png +0 -0
- data/images/google.jpg +0 -0
- data/images/icons/toilet.png +0 -0
- data/images/sakura.jpg +0 -0
- data/images/sakura2.jpg +0 -0
- data/init.rb +5 -0
- data/lib/classes/arrays.rb +246 -0
- data/lib/classes/debug_ric.rb +196 -0
- data/lib/classes/fake_data.rb +8 -0
- data/lib/classes/ric_debug.rb +0 -0
- data/lib/classes/ricconf.rb +110 -0
- data/lib/classes/richelp.rb +70 -0
- data/lib/classes/strings.rb +284 -0
- data/lib/facter/google_compute_engine.rb +10 -0
- data/lib/recipes/20120411-puppet-rump-palladius.recipe +2 -0
- data/lib/recipes/20120726-skype.ubuntu.recipe +16 -0
- data/lib/recipes/20130206-puppet3.ubuntu.recipe +32 -0
- data/lib/recipes/20130206-redis.linux.recipe +17 -0
- data/lib/recipes/20130208-vanilla.linux.recipe +37 -0
- data/lib/recipes/Makefile +4 -0
- data/lib/recipes/README.md +29 -0
- data/lib/recipes/scripts/redis.sh +14 -0
- data/lib/ric.rb +156 -0
- data/lib/ric_colors.rb +313 -0
- data/lib/ric_strings.rb +285 -0
- data/lib/sonice-players/itunes_mac.rb +43 -0
- data/lib/sonice-players/itunes_win.rb +47 -0
- data/lib/sonice-players/mpd.rb +45 -0
- data/lib/sonice-players/rhythmbox.rb +38 -0
- data/profile +1 -0
- data/sakuric.gemspec +40 -0
- data/sbin/install-sakura-on-debian +25 -0
- data/sbin/make-install.sh +10 -0
- data/sbin/mate-createsymlink +4 -0
- data/sounds/0.ogg +0 -0
- data/sounds/0.wav +0 -0
- data/sounds/01.ogg +0 -0
- data/sounds/02.ogg +0 -0
- data/sounds/03.ogg +0 -0
- data/sounds/08.ogg +0 -0
- data/sounds/09.ogg +0 -0
- data/sounds/1.ogg +0 -0
- data/sounds/1.wav +0 -0
- data/sounds/10.ogg +0 -0
- data/sounds/100.ogg +0 -0
- data/sounds/11.ogg +0 -0
- data/sounds/12.ogg +0 -0
- data/sounds/13.ogg +0 -0
- data/sounds/14.ogg +0 -0
- data/sounds/15.ogg +0 -0
- data/sounds/16.ogg +0 -0
- data/sounds/17.ogg +0 -0
- data/sounds/18.ogg +0 -0
- data/sounds/19.ogg +0 -0
- data/sounds/2.ogg +0 -0
- data/sounds/2.wav +0 -0
- data/sounds/20.ogg +0 -0
- data/sounds/21.ogg +0 -0
- data/sounds/22.ogg +0 -0
- data/sounds/23.ogg +0 -0
- data/sounds/24.ogg +0 -0
- data/sounds/26.ogg +0 -0
- data/sounds/3.ogg +0 -0
- data/sounds/3.wav +0 -0
- data/sounds/30.ogg +0 -0
- data/sounds/34.ogg +0 -0
- data/sounds/4.ogg +0 -0
- data/sounds/4.wav +0 -0
- data/sounds/40.ogg +0 -0
- data/sounds/42.ogg +0 -0
- data/sounds/45.ogg +0 -0
- data/sounds/47.ogg +0 -0
- data/sounds/5.ogg +0 -0
- data/sounds/5.wav +0 -0
- data/sounds/50.ogg +0 -0
- data/sounds/6.ogg +0 -0
- data/sounds/6.wav +0 -0
- data/sounds/60.ogg +0 -0
- data/sounds/7.ogg +0 -0
- data/sounds/7.wav +0 -0
- data/sounds/70.ogg +0 -0
- data/sounds/8.ogg +0 -0
- data/sounds/8.wav +0 -0
- data/sounds/80.ogg +0 -0
- data/sounds/9.ogg +0 -0
- data/sounds/9.wav +0 -0
- data/sounds/90.ogg +0 -0
- data/sounds/a.ogg +0 -0
- data/sounds/aaahhh.ogg +0 -0
- data/sounds/abologna.ogg +0 -0
- data/sounds/adargenta.ogg +0 -0
- data/sounds/alzatiecammina.ogg +0 -0
- data/sounds/apache.ogg +0 -0
- data/sounds/attenzione.ogg +0 -0
- data/sounds/awesome.m4a +0 -0
- data/sounds/bazinga.mp3 +0 -0
- data/sounds/bazinga.ogg +0 -0
- data/sounds/bela regaz.wav +0 -0
- data/sounds/benvenuti.wav +0 -0
- data/sounds/benvenuti2.wav +0 -0
- data/sounds/bergonz.ogg +0 -0
- data/sounds/boh.ogg +0 -0
- data/sounds/buahah.ogg +0 -0
- data/sounds/buonasera.ogg +0 -0
- data/sounds/buongiorno.ogg +0 -0
- data/sounds/burp.ogg +0 -0
- data/sounds/carlo.ogg +0 -0
- data/sounds/cena.ogg +0 -0
- data/sounds/che figata.m4a +0 -0
- data/sounds/che figlio di puttana.m4a +0 -0
- data/sounds/che.ogg +0 -0
- data/sounds/ciao.ogg +0 -0
- data/sounds/ciao.wav +0 -0
- data/sounds/da.ogg +0 -0
- data/sounds/davide.ogg +0 -0
- data/sounds/demone.ogg +0 -0
- data/sounds/dhcp.ogg +0 -0
- data/sounds/dinuovo.ogg +0 -0
- data/sounds/dns.ogg +0 -0
- data/sounds/dopo.ogg +0 -0
- data/sounds/e'.ogg +0 -0
- data/sounds/eattivo.ogg +0 -0
- data/sounds/ee.ogg +0 -0
- data/sounds/ehi.ogg +0 -0
- data/sounds/eoragiu.ogg +0 -0
- data/sounds/eorasu.ogg +0 -0
- data/sounds/eripartita.ogg +0 -0
- data/sounds/estato.ogg +0 -0
- data/sounds/estatoriavviato.ogg +0 -0
- data/sounds/fratro.ogg +0 -0
- data/sounds/frozenbubble.ogg +0 -0
- data/sounds/funziona.ogg +0 -0
- data/sounds/go raibh mile maith agaibh.m4a +0 -0
- data/sounds/grazie.ogg +0 -0
- data/sounds/h1.ogg +0 -0
- data/sounds/hainuovaposta.ogg +0 -0
- data/sounds/hogiamangiato.ogg +0 -0
- data/sounds/host.ogg +0 -0
- data/sounds/il.ogg +0 -0
- data/sounds/ilcomputer.ogg +0 -0
- data/sounds/ilnumerodaleiselezionatoe.ogg +0 -0
- data/sounds/ilprocesso.ogg +0 -0
- data/sounds/ilprogramma.ogg +0 -0
- data/sounds/ilservizio.ogg +0 -0
- data/sounds/imap.ogg +0 -0
- data/sounds/imieisuperpoterimidiconoche.ogg +0 -0
- data/sounds/infunzione.ogg +0 -0
- data/sounds/inpunto.ogg +0 -0
- data/sounds/ipmon.ogg +0 -0
- data/sounds/laconnessioneadinternet.ogg +0 -0
- data/sounds/lastampante.ogg +0 -0
- data/sounds/lazzaron.ogg +0 -0
- data/sounds/ldap.ogg +0 -0
- data/sounds/linterfaccia.ogg +0 -0
- data/sounds/lucilla.ogg +0 -0
- data/sounds/ma vaffanculo.m4a +0 -0
- data/sounds/majjal.wav +0 -0
- data/sounds/mamma.ogg +0 -0
- data/sounds/mauro.ogg +0 -0
- data/sounds/max.ogg +0 -0
- data/sounds/meerda.wav +0 -0
- data/sounds/meno.ogg +0 -0
- data/sounds/merda clo.wav +0 -0
- data/sounds/mezza.ogg +0 -0
- data/sounds/mila.ogg +0 -0
- data/sounds/mille.ogg +0 -0
- data/sounds/minuti.ogg +0 -0
- data/sounds/named.ogg +0 -0
- data/sounds/no.ogg +0 -0
- data/sounds/nohofame.ogg +0 -0
- data/sounds/nonfunziona.ogg +0 -0
- data/sounds/nonriescoatrovare.ogg +0 -0
- data/sounds/nonsarebbeoradilavorare.ogg +0 -0
- data/sounds/nonstalavorando.ogg +0 -0
- data/sounds/numero.wav +0 -0
- data/sounds/ooohhh.ogg +0 -0
- data/sounds/pinger.ogg +0 -0
- data/sounds/pocofa.ogg +0 -0
- data/sounds/pop3.ogg +0 -0
- data/sounds/porca puttana.m4a +0 -0
- data/sounds/porcapupazza.ogg +0 -0
- data/sounds/ppp.ogg +0 -0
- data/sounds/pranzo.ogg +0 -0
- data/sounds/prego.ogg +0 -0
- data/sounds/prima.ogg +0 -0
- data/sounds/qualcosamidice.ogg +0 -0
- data/sounds/raggiungibile.ogg +0 -0
- data/sounds/riccardo.ogg +0 -0
- data/sounds/salsa ridge.wav +0 -0
- data/sounds/scusa.ogg +0 -0
- data/sounds/seriously man.m4a +0 -0
- data/sounds/si.ogg +0 -0
- data/sounds/sito porno con sonoro.wav +0 -0
- data/sounds/socmel.wav +0 -0
- data/sounds/sono.ogg +0 -0
- data/sounds/sonoacasa.ogg +0 -0
- data/sounds/sonole.ogg +0 -0
- data/sounds/sputo.ogg +0 -0
- data/sounds/ssh.ogg +0 -0
- data/sounds/stagiocando.ogg +0 -0
- data/sounds/statospento.ogg +0 -0
- data/sounds/stopaiodipalle.ogg +0 -0
- data/sounds/thesedicks.wav +0 -0
- data/sounds/tornatosu.ogg +0 -0
- data/sounds/trapoco.ogg +0 -0
- data/sounds/trequarti.ogg +0 -0
- data/sounds/tutti.ogg +0 -0
- data/sounds/una.ogg +0 -0
- data/sounds/unquarto.ogg +0 -0
- data/sounds/virgola.ogg +0 -0
- data/sources/c/usleep.c +50 -0
- data/spec/my_first_spec.rb +6 -0
- data/tasks/sakuric-gem.rake +21 -0
- data/tasks/testing.rake +15 -0
- data/templates/bashrc.inject +10 -0
- data/templates/happy_christmas.ascii_art +5 -0
- data/test/roodi.sh +10 -0
- data/test/test_mini_failing.rb +3 -0
- data/test/test_mini_ok.rb +3 -0
- data/test/test_ruby_syntax.sh +12 -0
- data/third-party/jsawk/README.markdown +437 -0
- data/third-party/jsawk/jsawk +1128 -0
- metadata +835 -0
data/bin/rosa
ADDED
data/bin/rosso
ADDED
data/bin/run-parts.sh
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# run-parts: Runs all the scripts found in a directory.
|
|
3
|
+
PATH=$PATH:/usr/bin
|
|
4
|
+
|
|
5
|
+
# keep going when something fails
|
|
6
|
+
set +e
|
|
7
|
+
|
|
8
|
+
if [ $# -lt 1 ]; then
|
|
9
|
+
echo "Usage: run-parts <directory>"
|
|
10
|
+
exit 1
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
if [ ! -d $1 ]; then
|
|
14
|
+
echo "Not a directory: $1"
|
|
15
|
+
echo "Usage: run-parts <directory>"
|
|
16
|
+
exit 1
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
# There are several types of files that we would like to
|
|
20
|
+
# ignore automatically, as they are likely to be backups
|
|
21
|
+
# of other scripts:
|
|
22
|
+
IGNORE_SUFFIXES="~ ^ , .bak .new .rpmsave .rpmorig .rpmnew .swp"
|
|
23
|
+
|
|
24
|
+
# Main loop:
|
|
25
|
+
for SCRIPT in $1/* ; do
|
|
26
|
+
# If this is not a regular file, skip it:
|
|
27
|
+
if [ ! -f $SCRIPT ]; then
|
|
28
|
+
continue
|
|
29
|
+
fi
|
|
30
|
+
# Determine if this file should be skipped by suffix:
|
|
31
|
+
SKIP=false
|
|
32
|
+
for SUFFIX in $IGNORE_SUFFIXES ; do
|
|
33
|
+
if [ ! "`basename $SCRIPT $SUFFIX`" = "`basename $SCRIPT`" ]; then
|
|
34
|
+
SKIP=true
|
|
35
|
+
break
|
|
36
|
+
fi
|
|
37
|
+
done
|
|
38
|
+
if [ "$SKIP" = "true" ]; then
|
|
39
|
+
continue
|
|
40
|
+
fi
|
|
41
|
+
# If we've made it this far, then run the script if it's executable:
|
|
42
|
+
if [ -x $SCRIPT ]; then
|
|
43
|
+
echo "$SCRIPT:"
|
|
44
|
+
echo
|
|
45
|
+
$SCRIPT 2>&1
|
|
46
|
+
echo
|
|
47
|
+
fi
|
|
48
|
+
done
|
|
49
|
+
|
|
50
|
+
exit 0
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
=begin
|
|
4
|
+
|
|
5
|
+
############################################################
|
|
6
|
+
@author: Riccardo Carlesso
|
|
7
|
+
@email: riccardo.carlesso@gmail.com
|
|
8
|
+
@maturity: development
|
|
9
|
+
@language: Ruby
|
|
10
|
+
@synopsis: Checks for Sakura new Version
|
|
11
|
+
@tags: development, rcarlesso, production
|
|
12
|
+
############################################################
|
|
13
|
+
|
|
14
|
+
=end
|
|
15
|
+
|
|
16
|
+
require 'optparse' # http://ruby.about.com/od/advancedruby/a/optionparser.htm
|
|
17
|
+
require 'open-uri'
|
|
18
|
+
|
|
19
|
+
$myconf = {
|
|
20
|
+
:sakura_version_online => 'https://raw.github.com/palladius/sakura/master/VERSION',
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
$PROG_VER = '0.9.1'
|
|
24
|
+
$DEBUG = false
|
|
25
|
+
|
|
26
|
+
def usage(comment=nil)
|
|
27
|
+
puts "#{$0} v.#{$PROG_VER}"
|
|
28
|
+
puts "Usage: #{File.basename $0} [-dhjv] [-l LOGFILE] <FOO> <BAR>"
|
|
29
|
+
deb $opts
|
|
30
|
+
pred comment if comment
|
|
31
|
+
exit 11
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def main
|
|
35
|
+
debug_on 'Just created script, presuming u need some debug. TODO REMOVE ME when everything works!' if $DEBUG
|
|
36
|
+
current_version = File.open(ENV['SAKURADIR'] + "VERSION").read.to_s.chomp
|
|
37
|
+
online_version = open($myconf[:sakura_version_online]).read.chomp rescue "1.2.3 err(#{$!})"
|
|
38
|
+
if (online_version == current_version)
|
|
39
|
+
puts "Your Sakura system is up to date: '#{online_version}'"
|
|
40
|
+
exit 0
|
|
41
|
+
else
|
|
42
|
+
# Note I have no concept whatsoever of newer or older, just different :)
|
|
43
|
+
puts "Hey!! Newer version available on the web: '#{online_version}' (You have '#{current_version}'). Go get it:\n\tgit pull origin master"
|
|
44
|
+
exit 1
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
main
|
data/bin/sakura-version
ADDED
data/bin/sano
ADDED
data/bin/sbianca
ADDED
data/bin/sblua
ADDED
data/bin/setterm-reset
ADDED
data/bin/sgialla
ADDED
data/bin/sgrigia
ADDED
data/bin/split
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
=begin
|
|
4
|
+
|
|
5
|
+
############################################################
|
|
6
|
+
@author: Riccardo Carlesso
|
|
7
|
+
@email: riccardo.carlesso@gmail.com
|
|
8
|
+
@maturity: production
|
|
9
|
+
@language: Ruby
|
|
10
|
+
@synopsis: [Brief Description here]
|
|
11
|
+
@tags: development, rcarlesso, test
|
|
12
|
+
@description:
|
|
13
|
+
splits STDIN based on ARGV[1].
|
|
14
|
+
if ARGV[2] os provided, then joins with it, otherwise it becomes a "\n"
|
|
15
|
+
############################################################
|
|
16
|
+
|
|
17
|
+
=end
|
|
18
|
+
require 'optparse' # http://ruby.about.com/od/advancedruby/a/optionparser.htm
|
|
19
|
+
|
|
20
|
+
$PROG_VER = '0.9.1'
|
|
21
|
+
$DEBUG = false
|
|
22
|
+
|
|
23
|
+
def usage(comment=nil)
|
|
24
|
+
puts "#{$0} v.#{$PROG_VER}"
|
|
25
|
+
puts "Usage: #{File.basename $0} <SPLIT_STRING> [<JOIN_STRING=\\n>]"
|
|
26
|
+
puts "Error: #{comment}" if comment
|
|
27
|
+
exit 11
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def main
|
|
31
|
+
usage "Give me 1 or 2 arguments!" unless ARGV.size > 0
|
|
32
|
+
split_string = ARGV[0].to_s
|
|
33
|
+
join_string = ARGV[1] || "\n"
|
|
34
|
+
puts STDIN.read.split(split_string).join(join_string)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
main()
|
data/bin/split.rb
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
=begin
|
|
4
|
+
|
|
5
|
+
############################################################
|
|
6
|
+
@author: Riccardo Carlesso
|
|
7
|
+
@email: riccardo.carlesso@gmail.com
|
|
8
|
+
@maturity: production
|
|
9
|
+
@language: Ruby
|
|
10
|
+
@synopsis: [Brief Description here]
|
|
11
|
+
@tags: development, rcarlesso, test
|
|
12
|
+
@description:
|
|
13
|
+
splits STDIN based on ARGV[1].
|
|
14
|
+
if ARGV[2] os provided, then joins with it, otherwise it becomes a "\n"
|
|
15
|
+
############################################################
|
|
16
|
+
|
|
17
|
+
=end
|
|
18
|
+
require 'optparse' # http://ruby.about.com/od/advancedruby/a/optionparser.htm
|
|
19
|
+
|
|
20
|
+
$PROG_VER = '0.9.1'
|
|
21
|
+
$DEBUG = false
|
|
22
|
+
|
|
23
|
+
def usage(comment=nil)
|
|
24
|
+
puts "#{$0} v.#{$PROG_VER}"
|
|
25
|
+
puts "Usage: #{File.basename $0} <SPLIT_STRING> [<JOIN_STRING=\\n>]"
|
|
26
|
+
puts "Error: #{comment}" if comment
|
|
27
|
+
exit 11
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def main
|
|
31
|
+
usage "Give me 1 or 2 arguments!" unless ARGV.size > 0
|
|
32
|
+
split_string = ARGV[0].to_s
|
|
33
|
+
join_string = ARGV[1] || "\n"
|
|
34
|
+
puts STDIN.read.split(split_string).join(join_string)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
main()
|
data/bin/srosa
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
while read riga; do echo -en "\033[38;5;203m$riga\033[0m\n"; done
|
data/bin/srossa
ADDED
data/bin/stty-sane
ADDED
data/bin/sudo^-1
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
usage() {
|
|
4
|
+
echo "Usage: $(basename $0) [command to be executes not as root]"
|
|
5
|
+
exit 1
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if [ $# = 0 ]; then
|
|
9
|
+
usage
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
if id |grep -q root ; then
|
|
13
|
+
echo "$(basename $0): Refusing to exec: '$*'"
|
|
14
|
+
exit 2
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
$@
|
|
18
|
+
|
data/bin/sverda
ADDED
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
|
|
3
|
+
# Copied from a PDF from Joshua McKenty
|
|
4
|
+
# "swift installation 4.McKenty.pdf"
|
|
5
|
+
export SWIFT_IP=${1:-$( ifconfig eth0 |grep "inet addr:"|cut -f 2 -d:|cut -f 1 -d' ')}
|
|
6
|
+
|
|
7
|
+
echo This script installs Swift SAIO in your machine. You have to be root to do that.
|
|
8
|
+
echo "I will use the IP taken by eth0: '$SWIFT_IP'"
|
|
9
|
+
echo "If you dont agree, restart the script providing the IP in ARGV[1]"
|
|
10
|
+
echo "Is that ok? If not, pls ctrl-C"
|
|
11
|
+
read DOESNT_MATTER
|
|
12
|
+
|
|
13
|
+
if [ -f /root/swift-saio-already-installed.touch ] ; then
|
|
14
|
+
echo "Warning, swift SAIO seems to be already installed. Quitting"
|
|
15
|
+
exit 66
|
|
16
|
+
fi
|
|
17
|
+
touch /root/swift-saio-already-installed.touch
|
|
18
|
+
|
|
19
|
+
set -x
|
|
20
|
+
# slide 3
|
|
21
|
+
apt-get -y install python-software-properties
|
|
22
|
+
add-apt-repository ppa:swift-core/ppa
|
|
23
|
+
apt-get update
|
|
24
|
+
apt-get -y install curl gcc bzr memcached python-configobj python-coverage python-dev python-nose python-setuptools python-simplejson python-xattr sqlite3 xfsprogs python-webob python-eventlet python-greenlet python-pastedeploy python-netifaces screen vim
|
|
25
|
+
|
|
26
|
+
# slide 4
|
|
27
|
+
adduser swiftdemo
|
|
28
|
+
adduser swiftdemo admin
|
|
29
|
+
mkdir /srv
|
|
30
|
+
dd if=/dev/zero of=/srv/swift-disk bs=1024 count=0 seek=1000000
|
|
31
|
+
mkfs.xfs -i size=1024 /srv/swift-disk
|
|
32
|
+
echo "/srv/swift-disk /mnt/sdb1 xfs loop,noatime,nodiratime,nobarrier,logbufs=8 0 0" >> /etc/fstab
|
|
33
|
+
mkdir /mnt/sdb1
|
|
34
|
+
mount /mnt/sdb1
|
|
35
|
+
mkdir /mnt/sdb1/1 /mnt/sdb1/2 /mnt/sdb1/3 /mnt/sdb1/4
|
|
36
|
+
chown -R swiftdemo:swiftdemo /mnt/sdb1
|
|
37
|
+
for x in {1..4}; do ln -s /mnt/sdb1/$x /srv/$x; done
|
|
38
|
+
mkdir -p /etc/swift/object-server /etc/swift/container-server /etc/swift/account-server
|
|
39
|
+
mkdir -p /srv/1/node/sdb1 /srv/2/node/sdb2 /srv/3/node/sdb3 /srv/4/node/sdb4
|
|
40
|
+
mkdir -p /var/run/swift
|
|
41
|
+
chown -R swiftdemo:swiftdemo /etc/swift /mnt/sdb1 /srv/[1-4]/ /var/run/swift
|
|
42
|
+
sed -e "s/exit 0/mkdir \/var\/run\/swift\nchown swiftdemo:swiftdemo
|
|
43
|
+
\/var\/run\/swift\nexit 0/g" /etc/rc.local -i
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
# Step 5: rsync
|
|
47
|
+
# Pag 11
|
|
48
|
+
|
|
49
|
+
cat << EOF > /etc/rsyncd.conf
|
|
50
|
+
uid = swiftdemo
|
|
51
|
+
gid = swiftdemo
|
|
52
|
+
log file = /var/log/rsyncd.log
|
|
53
|
+
pid file = /var/run/rsyncd.pid
|
|
54
|
+
address = 127.0.0.1
|
|
55
|
+
|
|
56
|
+
# Pag 12
|
|
57
|
+
[account6012]
|
|
58
|
+
max connections = 25
|
|
59
|
+
path = /srv/1/node/
|
|
60
|
+
read only = false
|
|
61
|
+
lock file = /var/lock/account6012.lock
|
|
62
|
+
[account6022]
|
|
63
|
+
max connections = 25
|
|
64
|
+
path = /srv/2/node/
|
|
65
|
+
read only = false
|
|
66
|
+
lock file = /var/lock/account6022.lock
|
|
67
|
+
[account6032]
|
|
68
|
+
max connections = 25
|
|
69
|
+
path = /srv/3/node/
|
|
70
|
+
read only = false
|
|
71
|
+
lock file = /var/lock/account6032.lock
|
|
72
|
+
[account6042]
|
|
73
|
+
max connections = 25
|
|
74
|
+
path = /srv/4/node/
|
|
75
|
+
read only = false
|
|
76
|
+
lock file = /var/lock/account6042.lock
|
|
77
|
+
|
|
78
|
+
# Pag 13
|
|
79
|
+
[container6011]
|
|
80
|
+
max connections = 25
|
|
81
|
+
path = /srv/1/node/
|
|
82
|
+
read only = false
|
|
83
|
+
lock file = /var/lock/container6011.lock
|
|
84
|
+
[container6021]
|
|
85
|
+
max connections = 25
|
|
86
|
+
path = /srv/2/node/
|
|
87
|
+
read only = false
|
|
88
|
+
lock file = /var/lock/container6021.lock
|
|
89
|
+
[container6031]
|
|
90
|
+
max connections = 25
|
|
91
|
+
path = /srv/3/node/
|
|
92
|
+
read only = false
|
|
93
|
+
lock file = /var/lock/container6031.lock
|
|
94
|
+
[container6041]
|
|
95
|
+
max connections = 25
|
|
96
|
+
path = /srv/4/node/
|
|
97
|
+
read only = false
|
|
98
|
+
lock file = /var/lock/container6041.lock
|
|
99
|
+
|
|
100
|
+
# Pag.14
|
|
101
|
+
cat << EOF >> /etc/rsyncd.conf
|
|
102
|
+
[object6010]
|
|
103
|
+
max connections = 25
|
|
104
|
+
path = /srv/1/node/
|
|
105
|
+
read only = false
|
|
106
|
+
lock file = /var/lock/object6010.lock
|
|
107
|
+
[object6020]
|
|
108
|
+
max connections = 25
|
|
109
|
+
path = /srv/2/node/
|
|
110
|
+
read only = false
|
|
111
|
+
lock file = /var/lock/object6020.lock
|
|
112
|
+
[object6030]
|
|
113
|
+
max connections = 25
|
|
114
|
+
path = /srv/3/node/
|
|
115
|
+
read only = false
|
|
116
|
+
lock file = /var/lock/object6030.lock
|
|
117
|
+
[object6040]
|
|
118
|
+
max connections = 25
|
|
119
|
+
path = /srv/4/node/
|
|
120
|
+
read only = false
|
|
121
|
+
lock file = /var/lock/object6040.lock
|
|
122
|
+
EOF
|
|
123
|
+
|
|
124
|
+
sed -e "s/RSYNC_ENABLE=false/RSYNC_ENABLE=true/g" /etc/default/rsync -i
|
|
125
|
+
|
|
126
|
+
# Pag. 15
|
|
127
|
+
# Executes the following as swift
|
|
128
|
+
su swiftdemo -c "
|
|
129
|
+
mkdir ~/bin
|
|
130
|
+
bzr init-repo swift
|
|
131
|
+
cd ~/swift; bzr branch lp:swift trunk
|
|
132
|
+
cd ~/swift/trunk; sudo python setup.py develop
|
|
133
|
+
cat << EOF >> ~/.bashrc
|
|
134
|
+
export SWIFT_TEST_CONFIG_FILE=/etc/swift/func_test.conf
|
|
135
|
+
export PATH=${PATH}:~/bin
|
|
136
|
+
EOF
|
|
137
|
+
. ~/.bashrc
|
|
138
|
+
"
|
|
139
|
+
|
|
140
|
+
# Pag 16
|
|
141
|
+
cd /etc/swift
|
|
142
|
+
openssl req -new -x509 -nodes -out cert.crt -keyout cert.key
|
|
143
|
+
# USE IP for COMMON NAME
|
|
144
|
+
|
|
145
|
+
# Pag 17
|
|
146
|
+
cat << EOF >> /etc/swift/proxy-server.conf
|
|
147
|
+
[DEFAULT]
|
|
148
|
+
bind_port = 443
|
|
149
|
+
bind_ip = $SWIFT_IP
|
|
150
|
+
cert_file = /etc/swift/cert.crt
|
|
151
|
+
key_file = /etc/swift/cert.key
|
|
152
|
+
user = swiftdemo
|
|
153
|
+
log_facility = LOG_LOCAL1
|
|
154
|
+
|
|
155
|
+
[pipeline:main]
|
|
156
|
+
pipeline = healthcheck cache swauth proxy-server
|
|
157
|
+
|
|
158
|
+
[app:proxy-server]
|
|
159
|
+
use = egg:swift#proxy
|
|
160
|
+
allow_account_management = true
|
|
161
|
+
|
|
162
|
+
[filter:swauth]
|
|
163
|
+
use = egg:swift#swauth
|
|
164
|
+
super_admin_key = swauthkey
|
|
165
|
+
default_swift_cluster = local#https://$SWIFT_IP:443/v1
|
|
166
|
+
|
|
167
|
+
[filter:healthcheck]
|
|
168
|
+
use = egg:swift#healthcheck
|
|
169
|
+
|
|
170
|
+
[filter:cache]
|
|
171
|
+
use = egg:swift#memcache
|
|
172
|
+
EOF
|
|
173
|
+
|
|
174
|
+
# Pag 18
|
|
175
|
+
cat << EOF >> /etc/swift/swift.conf
|
|
176
|
+
[swift-hash]
|
|
177
|
+
# random unique string that can never change
|
|
178
|
+
swift_hash_path_suffix = riccardo-sakura-swift-tutorial
|
|
179
|
+
EOF
|
|
180
|
+
|
|
181
|
+
# Pag 19: Account server
|
|
182
|
+
cd /etc/swift/account-server
|
|
183
|
+
cat << EOF > 1.conf
|
|
184
|
+
[DEFAULT]
|
|
185
|
+
devices = /srv/1/node
|
|
186
|
+
mount_check = false
|
|
187
|
+
bind_port = 6012
|
|
188
|
+
user = swiftdemo
|
|
189
|
+
log_facility = LOG_LOCAL2
|
|
190
|
+
[pipeline:main]
|
|
191
|
+
pipeline = account-server
|
|
192
|
+
[app:account-server]
|
|
193
|
+
use = egg:swift#account
|
|
194
|
+
[account-replicator]
|
|
195
|
+
vm_test_mode = yes
|
|
196
|
+
[account-auditor]
|
|
197
|
+
[account-reaper]
|
|
198
|
+
EOF
|
|
199
|
+
sed -e "s/srv\/1/srv\/2/" -e "s/6012/6022/" -e "s/LOG_LOCAL2/LOG_LOCAL3/" 1.conf > 2.conf
|
|
200
|
+
sed -e "s/srv\/1/srv\/3/" -e "s/6012/6032/" -e "s/LOG_LOCAL2/LOG_LOCAL4/" 1.conf > 3.conf
|
|
201
|
+
sed -e "s/srv\/1/srv\/4/" -e "s/6012/6042/" -e "s/LOG_LOCAL2/LOG_LOCAL5/" 1.conf > 4.conf
|
|
202
|
+
|
|
203
|
+
# Pag 20: Container
|
|
204
|
+
cd /etc/swift/container-server
|
|
205
|
+
cat << EOF > 1.conf
|
|
206
|
+
[DEFAULT]
|
|
207
|
+
devices = /srv/1/node
|
|
208
|
+
mount_check = false
|
|
209
|
+
bind_port = 6011
|
|
210
|
+
user = swiftdemo
|
|
211
|
+
log_facility = LOG_LOCAL2
|
|
212
|
+
[pipeline:main]
|
|
213
|
+
pipeline = container-server
|
|
214
|
+
[app:container-server]
|
|
215
|
+
use = egg:swift#container
|
|
216
|
+
[container-replicator]
|
|
217
|
+
vm_test_mode = yes
|
|
218
|
+
[container-updater]
|
|
219
|
+
[container-auditor]
|
|
220
|
+
EOF
|
|
221
|
+
sed -e "s/srv\/1/srv\/2/" -e "s/601/602/" -e "s/LOG_LOCAL2/LOG_LOCAL3/" 1.conf > 2.conf
|
|
222
|
+
sed -e "s/srv\/1/srv\/3/" -e "s/601/603/" -e "s/LOG_LOCAL2/LOG_LOCAL4/" 1.conf > 3.conf
|
|
223
|
+
sed -e "s/srv\/1/srv\/4/" -e "s/601/604/" -e "s/LOG_LOCAL2/LOG_LOCAL5/" 1.conf > 4.conf
|
|
224
|
+
|
|
225
|
+
# Pag 21: Object Server
|
|
226
|
+
cd /etc/swift/object-server
|
|
227
|
+
cat << EOF > 1.conf
|
|
228
|
+
[DEFAULT]
|
|
229
|
+
devices = /srv/1/node
|
|
230
|
+
mount_check = false
|
|
231
|
+
bind_port = 6010
|
|
232
|
+
user = swiftdemo
|
|
233
|
+
log_facility = LOG_LOCAL2
|
|
234
|
+
[pipeline:main]
|
|
235
|
+
pipeline = object-server
|
|
236
|
+
[app:object-server]
|
|
237
|
+
use = egg:swift#object
|
|
238
|
+
[object-replicator]
|
|
239
|
+
vm_test_mode = yes
|
|
240
|
+
[object-updater]
|
|
241
|
+
[object-auditor]
|
|
242
|
+
EOF
|
|
243
|
+
sed -e "s/srv\/1/srv\/2/" -e "s/601/602/" -e "s/LOG_LOCAL2/LOG_LOCAL3/" 1.conf > 2.conf
|
|
244
|
+
sed -e "s/srv\/1/srv\/3/" -e "s/601/603/" -e "s/LOG_LOCAL2/LOG_LOCAL4/" 1.conf > 3.conf
|
|
245
|
+
sed -e "s/srv\/1/srv\/4/" -e "s/601/604/" -e "s/LOG_LOCAL2/LOG_LOCAL5/" 1.conf > 4.conf
|
|
246
|
+
|
|
247
|
+
# Pag 22: Binaries
|
|
248
|
+
su swiftdemo -c "
|
|
249
|
+
cat << EOF > ~/bin/resetswift
|
|
250
|
+
#!/bin/bash
|
|
251
|
+
|
|
252
|
+
swift-init all stop
|
|
253
|
+
# find /var/log/swift -type f -exec rm -f {} \;
|
|
254
|
+
sudo umount /mnt/sdb1
|
|
255
|
+
sudo mkfs.xfs -f -i size=1024 /srv/swift-disk
|
|
256
|
+
sudo mount /mnt/sdb1
|
|
257
|
+
sudo mkdir /mnt/sdb1/1 /mnt/sdb1/2 /mnt/sdb1/3 /mnt/sdb1/4
|
|
258
|
+
sudo chown swiftdemo:swiftdemo /mnt/sdb1/*
|
|
259
|
+
mkdir -p /srv/1/node/sdb1 /srv/2/node/sdb2 /srv/3/node/sdb3 /srv/4/node/sdb4
|
|
260
|
+
sudo chown swiftdemo:swiftdemo /mnt/sdb1/*
|
|
261
|
+
sudo rm -f /var/log/debug /var/log/messages /var/log/rsyncd.log /var/log/syslog
|
|
262
|
+
sudo service rsyslog restart
|
|
263
|
+
sudo service memcached restart
|
|
264
|
+
EOF
|
|
265
|
+
|
|
266
|
+
# Pag 23: Binaries 2
|
|
267
|
+
cat << EOF > ~/bin/remakerings
|
|
268
|
+
#!/bin/bash
|
|
269
|
+
|
|
270
|
+
cd /etc/swift
|
|
271
|
+
|
|
272
|
+
rm -f *.builder *.ring.gz backups/*.builder backups/*.ring.gz
|
|
273
|
+
|
|
274
|
+
swift-ring-builder object.builder create 18 3 1
|
|
275
|
+
swift-ring-builder object.builder add z1-$SWIFT_IP:6010/sdb1 1
|
|
276
|
+
swift-ring-builder object.builder add z2-$SWIFT_IP:6020/sdb2 1
|
|
277
|
+
swift-ring-builder object.builder add z3-$SWIFT_IP:6030/sdb3 1
|
|
278
|
+
swift-ring-builder object.builder add z4-$SWIFT_IP:6040/sdb4 1
|
|
279
|
+
swift-ring-builder object.builder rebalance
|
|
280
|
+
swift-ring-builder container.builder create 18 3 1
|
|
281
|
+
swift-ring-builder container.builder add z1-$SWIFT_IP:6011/sdb1 1
|
|
282
|
+
swift-ring-builder container.builder add z2-$SWIFT_IP:6021/sdb2 1
|
|
283
|
+
swift-ring-builder container.builder add z3-$SWIFT_IP:6031/sdb3 1
|
|
284
|
+
swift-ring-builder container.builder add z4-$SWIFT_IP:6041/sdb4 1
|
|
285
|
+
swift-ring-builder container.builder rebalance
|
|
286
|
+
swift-ring-builder account.builder create 18 3 1
|
|
287
|
+
swift-ring-builder account.builder add z1-$SWIFT_IP:6012/sdb1 1
|
|
288
|
+
swift-ring-builder account.builder add z2-$SWIFT_IP:6022/sdb2 1
|
|
289
|
+
swift-ring-builder account.builder add z3-$SWIFT_IP:6032/sdb3 1
|
|
290
|
+
swift-ring-builder account.builder add z4-$SWIFT_IP:6042/sdb4 1
|
|
291
|
+
swift-ring-builder account.builder rebalance
|
|
292
|
+
EOF
|
|
293
|
+
|
|
294
|
+
# Pag 24:
|
|
295
|
+
cat << EOF > ~/bin/startmain
|
|
296
|
+
#!/bin/bash
|
|
297
|
+
|
|
298
|
+
swift-init main start
|
|
299
|
+
EOF
|
|
300
|
+
|
|
301
|
+
cat << EOF > ~/bin/recreateaccounts
|
|
302
|
+
#!/bin/bash
|
|
303
|
+
|
|
304
|
+
# Replace swauthkey with whatever your super_admin key is (recorded in
|
|
305
|
+
# /etc/swift/proxy-server.conf).
|
|
306
|
+
swauth-prep -K swauthkey -A https://$SWIFT_IP:443/auth/
|
|
307
|
+
swauth-add-user -K swauthkey -A https://$SWIFT_IP:443/auth/ -a test tester testing
|
|
308
|
+
swauth-add-user -K swauthkey -A https://$SWIFT_IP:443/auth/ -a test2 tester2 testing2
|
|
309
|
+
swauth-add-user -K swauthkey -A https://$SWIFT_IP:443/auth/ test tester3 testing3
|
|
310
|
+
swauth-add-user -K swauthkey -A https://$SWIFT_IP:443/auth/ -a -r reseller reseller reseller
|
|
311
|
+
EOF
|
|
312
|
+
|
|
313
|
+
# Pag 25:
|
|
314
|
+
cat << EOF > ~/bin/startrest
|
|
315
|
+
#!/bin/bash
|
|
316
|
+
|
|
317
|
+
swift-init rest start
|
|
318
|
+
EOF
|
|
319
|
+
|
|
320
|
+
chmod +x ~/bin/*
|
|
321
|
+
|
|
322
|
+
# Pag 26
|
|
323
|
+
. ~/.bashrc
|
|
324
|
+
remakerings
|
|
325
|
+
cd ~/swift/trunk; ./.unittests
|
|
326
|
+
sudo bin/startmain
|
|
327
|
+
recreateaccounts
|
|
328
|
+
|
|
329
|
+
"
|
|
330
|
+
#/end user swift demo (!!)
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
################################################################################
|
|
335
|
+
# End of everything
|
|
336
|
+
touch /root/swift-saio-already-installed.touch
|