Shell
.https://cloud.google.com/shell/docs/configuring-cloud-shell
declare -a tables=('click_user_sessions' 'user_ip_activity');
for i in "${tables[@]}"
do
table_name=$i
TABLE_NAME=`echo $table_name | tr '[a-z]' '[A-Z]'`
## Cleanup existing data
echo -e "\t-> Remove any existing Elastic search config"
curl -s -X "DELETE" "http://$ELASTIC_HOST:9200/""$table_name" >>/tmp/log.txt 2>&1
done
/run

Library
function get_hiveserver_uri() {
local base_connect_string="jdbc:hive2://localhost:10000"
if [[ "${KERBEROS_ENABLED}" == 'true' ]]; then
local hive_principal
hive_principal=$(get_hive_principal)
echo "${base_connect_string}/;principal=${hive_principal}"
else
echo "${base_connect_string}"
fi
}
cat command
cat <<EOF >hive-template.xml
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:${METASTORE_PROXY_PORT}/${METASTORE_DB}</value>
<description>the URL of the MySQL database</description>
</property>
...
</configuration>
EOF
Permissions
sudo chown -R $USER:$(id -gn $USER) /home/janardhan/.config
for u in 0660:rw-rw---- \
0640:rw-r----- \
0600:rw------- \
0666:rw-rw-rw- \
0664:rw-rw-r--
do
x=$(expr "$u" : ".*:\([rw-]*\)") &&
y=$(echo "$x" | sed -e "s/w/-/g") &&
u=$(expr "$u" : "\([0-7]*\)") &&
git config core.sharedrepository "$u" &&
umask 0277 &&
history
Ctrl
+ R
- Recursive command search
$ history
clear
echo "hello"
history
# Replay above three commands by !3
# Which tells 3rd line to run
!3
$ history | grep hello
3 echo "hello"
5 history | grep hello
# For timestamp
HISTTIMEFORMAT="%d/%m/%y %T " # for e.g. “29/02/99 23:59:59”
HISTTIMEFORMAT="%F %T " # for e.g. “1999-02-29 23:59:59”
Environment variables
Windows (PowerShell)
($env:NODE_ENV = "development") -and (nx build myapp)
Windows (cmd.exe)
set "NODE_ENV=development" && nx build myapp
Unix systems
NODE_ENV=development nx build myapp
Java Dev Environment
sudo apt-get update
sudo apt-get install git -y
sudo apt-get install -yq maven
# configure iptable requests from port 80 to 8080
# Java web application listens on 8080
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
PGP
PGP_PUB_KEY="generated-key.pgp"
sudo apt-get install rng-tools
sudo rngd -r /dev/urandom
gpg --quick-generate-key --yes [email protected]
gpg --armor --export "${ATTESTOR_EMAIL}" > ${PGP_PUB_KEY}
GENERATED_PAYLOAD="generated_payload.json"
GENERATED_SIGNATURE="generated_signature.pgp"
PGP_FINGERPRINT="$(gpg --list-keys ${ATTESTOR_EMAIL} | head -2 | tail -1 | awk '{print $1}')"
# ignore gcloud command, focus on generated payload
gcloud beta container binauthz create-signature-payload \
--artifact-url="${IMAGE_PATH}@${IMAGE_DIGEST}" > ${GENERATED_PAYLOAD}
gpg --local-user "${ATTESTOR_EMAIL}" \
--armor \
--output ${GENERATED_SIGNATURE} \
--sign ${GENERATED_PAYLOAD}
/etc/profile
echo "gcloud container clusters get-credentials gke-security-demo-ss \
--zone us-central1-a --project qwiklabs-gcp-03-173a36e0912c" >> /etc/profile
echo "kubectl get clusterrolebinding gke-tutorial-admin-binding &> /dev/null ||
kubectl create clusterrolebinding gke-tutorial-admin-binding \
--clusterrole cluster-admin --user $(gcloud config get-value account)
" >> /etc/profile
Install Ansible terraform
# Install Ansible package from apt repository.
function getAnsible() {
local A_EXE="/usr/bin/ansible"
if [ -e ${A_EXE} ]; then
echo "${A_EXE} already exists. Exiting."
return 0
fi
echo -n "Installing Ansible ..."
sudo apt-get -y update &> setup.log
sudo apt-get -y install software-properties-common &>> setup.log
sudo apt-add-repository ppa:ansible/ansible -y &>> setup.log
sudo apt-get -y update &>> setup.log
sudo apt-get -y install ansible &>> setup.log
if [ -e ${A_EXE} ]; then
echo " Done"
else
echo " Could not retrieve ${A_EXE}."
fi
}
# Install Python libraries.
function getPyLibs() {
echo -n "Installing Python libraries ..."
sudo pip install pandevice xmltodict &>> setup.log
echo " Done"
}
# Main program
getAnsible
getPyLibs
sed
sed -i 's_~/_~_' ./scripts/install/setup_properties.sh


sed -i 's|= container|= k8s_container|g' filename.txt
.sh examples
#!/bin/bash
sudo apt-get update
sudo apt install git kubectl -y
mkdir /work
chmod o+rwx /work
cd /work
gsutil cp gs://spls/gsp314/files.tgz .
tar -xzf files.tgz
chmod o+rw -R *
cd /
gsutil cp gs://spls/gsp314/script.sh .
chmod +x script.sh
useradd -m user1
echo "Starting VM provisioning Script"
su -c "/script.sh [email protected]" - user1
if [$? -eq 1]
then
echo "Script failed. Aborting DM."
exit 1
else
echo "Signal the waiter we have completed successfully"
gcloud beta runtime-config configs create projects/qwiklabs-gcp-04-b0801511bcde/configs/qldm-27678628-3f7856d82ec5c7b5-installer-config --description "Jumphost VM"
gcloud beta runtime-config configs variables set \
success/jumphost-waiter \
success --config-name projects/qwiklabs-gcp-04-b0801511bcde/configs/qldm-27678628-3f7856d82ec5c7b5-installer-config
fi
Powershell
.https://cloud.google.com/iam/docs/creating-managing-service-account-keys#uploading
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_NAME@PROJECT_ID.iam.gserviceaccount.com/keys:upload" | Select-Object -Expand Content
Tips
How to remove a file named -r
-r
is normally a flag, but here it is accidentally created
[root@machine ~]# ls
-r logs-delete.sh nohup.out
archive trash
[root@machine ~]# rm -- -r
rm: remove regular empty file '-r'? y
Last updated
Was this helpful?