2016-06-27 19:00:19 +00:00
#!/bin/bash
2016-08-03 21:45:13 +00:00
mysqlrootpass=${mysqlrootpass:-b+Ydjq4ejT4E}
2017-06-22 11:35:58 +00:00
# After first run, set this:
# export INSTALL=echo
INSTALL=${INSTALL:-"sudo aptitude -y install"}
2016-06-27 19:00:19 +00:00
# The testsuite depends on this:
2017-06-22 11:35:58 +00:00
test_pkgs="imagemagick expect autossh sshpass jq libpod-simple-perl pod2pdf gawk"
test_pkgs="$test_pkgs lua5.2 clisp php7.0-cli nodejs-legacy mono-csharp-shell"
2016-06-27 19:00:19 +00:00
# DEBIAN package
2017-06-22 12:22:23 +00:00
packaging_pkgs="dpkg-dev build-essential debhelper osc cvs"
2016-07-22 16:10:28 +00:00
# SHEBANG TOOLS
2017-06-22 11:35:58 +00:00
shebang_pkgs="gnuplot octave ruby r-base-core"
2016-07-22 16:10:28 +00:00
# SQL TOOLS
2017-06-22 11:35:58 +00:00
sql_pkgs="libdbd-pg-perl libdbd-sqlite3-perl libdbd-csv-perl libdbd-mysql-perl rlwrap"
2016-07-22 16:10:28 +00:00
# Compression
2017-06-22 11:35:58 +00:00
compression_pkgs="zstd clzip liblz4-tool lzop pigz pixz pxz gzip plzip pbzip2 lzma xz-utils lzip bzip2 lbzip2 lrzip"
# Shells
shell_pkgs="ash csh dash fdclone fish fizsh ksh mksh posh rc rush sash tcsh yash zsh"
# Databases
database_pkgs="postgresql mysql-server sqlite"
$INSTALL $test_pkgs $packaging_pkgs $shebang_pkgs $sql_pkgs $compression_pkgs $shell_pkgs $database_pkgs
2016-06-27 19:00:19 +00:00
# DATABASES
2016-07-02 16:00:51 +00:00
echo '# Create PostgreSQL'
2016-06-27 19:00:19 +00:00
sudo su - postgres -c 'createdb '`whoami`
sudo su - postgres -c 'createuser '`whoami`
sudo su - postgres -c "sql pg:/// \"ALTER USER \\\"`whoami`\\\" WITH PASSWORD '`whoami`';\""
2016-07-02 16:00:51 +00:00
echo '# Create MySQL'
2016-06-27 19:00:19 +00:00
sudo su - mysql mysqladmin create `whoami`
2016-07-02 16:00:51 +00:00
sql mysql://root:"$mysqlrootpass"@/mysql "DROP DATABASE `whoami`;DROP USER '`whoami`'@'localhost';"
sql mysql://root:"$mysqlrootpass"@/mysql "CREATE DATABASE `whoami`;CREATE USER '`whoami`'@'localhost' IDENTIFIED BY '`whoami`'; GRANT ALL ON `whoami`.* TO '`whoami`'@'localhost';"
2016-06-27 19:00:19 +00:00
# SHELLS
2017-06-22 11:35:58 +00:00
touch ~/.zshrc
2016-06-27 19:00:19 +00:00
SSHPASS=`goodpasswd`
export SSHPASS
2016-08-03 21:45:13 +00:00
#shells="bash sh csh ash tcsh zsh ksh fish fizsh mksh pdksh posh rc sash yash nopathbash nopathcsh"
2017-02-07 23:54:45 +00:00
shells="bash sh csh ash dash tcsh zsh ksh fish fizsh mksh posh rc sash yash nopathbash nopathcsh"
2016-06-27 19:00:19 +00:00
create_shell_user() {
shell="$1"
sudo deluser $shell && sudo mv /home/$shell /tmp/$shell.$RANDOM
sudo groupdel $shell
sudo adduser --disabled-password --gecos "$shell for parallel,,," $shell &&
echo "$shell:$SSHPASS" | sudo chpasswd &&
sshpass -e ssh-copy-id $shell@lo &&
2017-06-22 11:35:58 +00:00
echo Add server keys for lo and server &&
2016-06-27 19:00:19 +00:00
ssh $shell@lo 'ssh-keyscan -t rsa lo >> .ssh/known_hosts' &&
2016-07-22 16:10:28 +00:00
ssh $shell@lo 'ssh-keyscan -t rsa server >> .ssh/known_hosts' &&
2016-08-03 21:45:13 +00:00
echo Do chsh -s $(which $shell || which ${shell#"nopath"}) $shell &&
(echo $shell | grep parallel ||
sudo chsh -s $(which $shell || which ${shell#"nopath"}) $shell) &&
2017-06-22 11:35:58 +00:00
echo Do ssh-keygen &&
echo | ssh -t $shell@lo ssh-keygen -b 1024 &&
2016-08-03 21:45:13 +00:00
echo Do ssh $shell@lo 'cat .ssh/id_rsa.pub >> .ssh/authorized_keys' &&
2016-06-27 19:00:19 +00:00
ssh $shell@lo 'cat .ssh/id_rsa.pub >> .ssh/authorized_keys' &&
ssh $shell@lo cat .ssh/id_rsa.pub | ssh parallel@lo 'cat >> .ssh/authorized_keys' &&
2017-01-16 23:16:03 +00:00
ssh $shell@lo 'echo ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxg+dh+BL1myqo6A+pHcQCKVV5v7cewdkN8xGtMDqm7xGgh+e5A44W7qKViIx641d6yoWb012XzDz2MKetG4Kosoma8Z/qkS27p6901RmI3ap2JFffzBESlpQtW1FyxQPlMyBfrd4ONy8xW6R/gEkjC3yOcXCQO2494/c46ouXs5gtE84Cusr3RsopR4bI7oloH1GQZ4vsHSFSakq8IwcujaSh1mmribMONLb2TjDpmE7tAY+yfOVWHPQ2J+EU1//Go60EZfSRKOu81oxW7SJ2uGgWfWcs2T1lRtT8Yh+TwVTz8UFV75kVtpZ10x5baN+ncsSpaBK+8sFLfoMvA9yQQ== tange@freebsd71.tange.dk >> .ssh/authorized_keys' &&
2016-08-03 21:45:13 +00:00
echo Do env_parallel --install &&
ssh $shell@lo env_parallel --install &&
2017-01-16 23:16:03 +00:00
ssh $shell@lo 'mkdir .parallel; touch .parallel/will-cite' &&
2016-08-03 21:45:13 +00:00
echo OK Created $shell &&
2017-06-22 11:35:58 +00:00
echo >&2 &&
echo OK Created $shell >&2 &&
2016-08-03 21:45:13 +00:00
echo
2016-06-27 19:00:19 +00:00
}
export -f create_shell_user
2016-08-03 21:45:13 +00:00
. `which env_parallel.bash`
shellsplus="parallel $shells"
2017-06-22 11:35:58 +00:00
# Racecondition: if multiple adds a group it will the same group ID
parallel --timeout 15 --retries 5 --tag -j1 create_shell_user ::: $shellsplus
ssh_a_to_b() {
ssh $1@lo ssh $2@lo echo OK ||
echo failed && false
}
export -f ssh_a_to_b
parallel -j8 --timeout 5 --tag ssh_a_to_b {} {} ::: $shellsplus
2016-06-27 19:00:19 +00:00
ssh_copy_id() {
from="$1"
to="$2"
ssh $from cat .ssh/id_rsa.pub | ssh $to 'cat >> .ssh/authorized_keys'
}
export -f ssh_copy_id
2016-08-03 21:45:13 +00:00
2017-06-22 11:35:58 +00:00
# copy id from any X to any Y
parallel -u --bar -j3 --timeout 3 --retries 10 --tag ssh_copy_id {1}@lo {2}@lo ::: $shellsplus ::: $shellsplus
# Test the copying went well
parallel -j3 --timeout 3 --retries 10 --tag ssh_a_to_b ::: $shellsplus ::: $shellsplus
2016-06-27 19:00:19 +00:00
# change paths to no path
(
2016-08-03 21:45:13 +00:00
ssh nopathbash@lo 'echo > .bashrc PATH=/bin:/usr/bin'
ssh nopathbash@lo 'echo > .profile PATH=/bin:/usr/bin'
2016-06-27 19:00:19 +00:00
# Remove env_parallel from .profile
ssh nopathbash@lo 'perl -i.bak -pe s/.*env_parallel.*// .profile .bashrc'
ssh nopathcsh@lo 'echo >> .cshrc setenv PATH /bin:/usr/bin'
ssh nopathbash@lo 'echo $PATH'
ssh nopathcsh@lo 'echo $PATH'
)
ssh-copy-id localhost
# SHELLS: lsh-client against openssh server
2016-08-03 21:45:13 +00:00
$INSTALL lsh-client
2016-06-27 19:00:19 +00:00
cd
mkdir .lsh
lsh-make-seed -o ".lsh/yarrow-seed-file"
2016-08-03 21:45:13 +00:00
lsh -c aes256-ctr --sloppy-host-authentication --capture-to ~/.lsh/host-acls lo echo Added host-auth
lsh -c aes256-ctr --sloppy-host-authentication --capture-to ~/.lsh/host-acls localhost echo Added host-auth
2016-06-27 19:00:19 +00:00
lsh-keygen | lsh-writekey -c none
2016-08-03 21:45:13 +00:00
lsh-export-key --openssh < ~/.lsh/identity.pub | lsh -c aes256-ctr lo 'cat >>.ssh/authorized_keys'
lsh-export-key --openssh < ~/.lsh/identity.pub | ssh csh@lo 'cat >>.ssh/authorized_keys'
2016-06-27 19:00:19 +00:00
2016-07-22 16:10:28 +00:00
2016-06-27 19:00:19 +00:00
parallel --record-env
sudo cp /usr/bin/tmux /usr/local/bin/tmux1.8
2016-08-03 21:45:13 +00:00
ssh freebsd7.t cat .ssh/id_rsa.pub | ssh parallel@localhost 'cat >>.ssh/authorized_keys'
echo Add:
echo HostkeyAlgorithms +ssh-dss
echo to .ssh/config if you get
echo no matching host key type found. Their offer: ssh-dss
2017-06-22 11:35:58 +00:00
echo
echo Add to /etc/ssh/sshd_config
echo Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc
echo KexAlgorithms diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,curve25519-sha256@libssh.org,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1