Server Setup Repository | https://github.com/afzalex/serversetup.git |
About Repository | https://github.com/afzalex/about.git |
#!/usr/bin/env bash
su ec2-user
sudo yum install httpd -y
sudo service httpd start
cat <<EOF | tee /tmp/index.html
<html>
<head>
<title> In the Pale Moonlight</title>
<style>
html, body { background: #000; padding: 0; margin: 0; }
img { display: block; margin: 0px auto; }
</style>
</head>
<body>
<img src='https://c.tenor.com/ITctI_ZpHIoAAAAM/brain-linux.gif' height='100%' />
</body>
</html>
EOF
sudo mv /tmp/index.html /var/www/html/index.html
sudo vim /lib/systemd/system/docker.service
now search following line
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
and modify it to add -H tcp://0.0.0.0:2375
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375 --containerd=/run/containerd/containerd.sock
now reload docker daemon
sudo systemctl daemon-reload
sudo systemctl restart docker
Edit or Create ~/.vimrc
set number
set tabstop=4
set softtabstop=4
set shiftwidth=4
set noexpandtab
set colorcolumn=110
set autoindent
highlight ColorColumn ctermbg=darkgray
- On Windows :
OR to persist password for specific time period
git config --global credential.helper wincred
git config --global credential.helper 'cache --timeout=3600'
- On Linux :
git config credential.helper store
Add following line in git config file i.e. ~/.gitconfig
[alias]
flog = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
Now formatted tree could be seen with following command
git flog
OR
Now formatted tree could be seen with following command
curl https://www.afzalex.com/scripts/install-flog.sh | /bin/bash
Create a file /etc/rsyncd.conf
motd file = /etc/rsyncd.motd
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
/home/afzal/tempo/
path = /home/afzal/tempo/
comment = Temporary rsync location
uid = nobody
gid = nobody
read only = no
list = yes
auth users = afzal
secrets file = /etc/rsyncd.scrt
Now enable rsync using systemctl
systemctl enable rsync.service
Add command in crontab to execute every day at 1:00 PM
crontab -e
Enter below code opened window
00 13 * * * rsync --verbose --stats --compress --recursive --times --perms --links --exclude=Downloads/ /home/afzal/ /var/backups/afzal/`date +"\%a"` >> /var/log/backup.log
Above command will sync /home/afzal into /var/backups/afzal/Mon where "Mon" value could be "Tue", "Wed", ..., "Sun" and output will be logged in /var/log/backup.log
Mind giving required previleges to files and directories used in this process
Check network devices attached
ifconfig
Note configuration of device you want to set for static ip Edit /etc/network/interfaces
Edit /etc/network/interfaces
auto eth1 # this refers to the Host-only network interface
iface eth1 inet static
address 192.168.56.10 # Arbitrary IP address
netmask 255.255.255.0
Edit /etc/init.d/rc and replace following line
CONCURRENCY=none
with this
CONCURRENCY=shell
Reduce the default grub boot time
sudo vim /etc/default/grub
GRUB_TIMEOUT=2
sudo update-grub
If apt-daily.service taking time to boot
sudo systemctl edit apt-daily.timer
# apt-daily timer configuration override
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
AccuracySec=1h
RandomizedDelaySec=30min
To check which device is mounted use findmnt
Then use hdparm
to check performance
findmnt
hdparm -Tt /dev/mmcblk0p2
Above command should be run with sudo user
Other way to check performance is to use fio
sudo apt-get install fio
mkdir fiotest
fio --name=write_throughput --directory=fiotest --numjobs=8 --size=10M --time_based --runtime=60s --ramp_time=2s --ioengine=libaio --direct=1 --verify=0 --bs=1M --iodepth=64 --rw=write --group_reporting=1
https://cloud.google.com/compute/docs/disks/benchmarking-pd-performance
cat /sys/class/thermal/thermal_zone*/type
The output shows the CPU temperature in the five-digit format. Here, 49000 means 49C.
mkdir -p ~/.docker
cat <<EOF > ~/.docker/config.json
{
"psFormat": "table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}\t{{printf \"%.60s\" .Ports}}"
}
EOF
Install important libraries
apt-get update
apt-get install -y iputils-ping
docker run -v "$PWD:/root" -w/root --rm -it --entrypoint bash debian:stable-slim
Install important libraries
apt-get update
apt-get install -y iputils-ping
To use below solution, nodejs is required.
npm i -g tty-table
cat data.csv | tty-table
Consider following textual file test_bash_file.sh
#!/bin/bash
echo "Hello World"
#MANAGED_BLOCK_START
#Please don't modify this text, it is managed by replacement script
echo "This is the content to be replaced"
#MANAGED_BLOCK_END
echo "above content should be managed via replacement script"
And another textual file test_scriptlet.dat
whose content is to be substituted in test_bash_file.sh
#Please don't modify this text, it is managed by replacement script
echo "Replaced Text"
echo "This is the content from replacement script"
Run following command to replace part of text file test_bash_file.sh
with test_scriptlet.dat
awk '
BEGIN {p=1}
/^#MANAGED_BLOCK_START/ {print;system("cat test_scriptlet.dat");p=0}
/^#MANAGED_BLOCK_END/ {p=1}
p' test_bash_file.sh
To replace text and substitute environment variables in replaced text
awk '
BEGIN {p=1}
/^#MANAGED_BLOCK_START/ {print;system("cat test_scriptlet.dat | envsubst");p=0}
/^#MANAGED_BLOCK_END/ {p=1}
p' test_bash_file.sh
ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output.mp4
with video re-encoding
ffmpeg -i video.mp4 -i audio.wav -c:v libx264 -c:a aac -map 0:v:0 -map 1:a:0 output.mp4
-
Audio
- Audio quantity : 1
- Codec : MP3
- Bitrate : 160 (Or 256 or 320 if music is main element)
-
Codec and Container
- Codec : H.264
- Container : MP4
-
Video resolution
2160p (3840Ă—2160) 1440p (2560Ă—1440) 1080p (1920Ă—1080) 720p (1280Ă—720) 480p (854Ă—480) 360p (640Ă—360) 240p (426Ă—240)
-
Bitrate
TYPE Bitrate: 24-30fps Bitrage: 48-60fps 2160p(4k) 35-45 Mbps 53-68 Mbps 1440p(2k) 16 Mbps 24 Mbps 1080p 8 Mbps 12 Mbps 720p 5 Mbps 7.5 Mbps 480p 2.5 Mbps 4 Mbps 360p 1 Mbps 1.5 Mbps
ffmpeg -i <inputfile> -acodec mp3 -vcodec h264 -b:a <audio_bitrate> -vf scale=<resolution_width>:<resolution_height> <outputfile_mp4>
ffmpeg -i input.mov -acodec mp3 -vcodec h264 -b:a 160k -vf scale=1280:720 output.mp4
- Generate private rsa key
openssl genrsa -aes256 -out server.key 1024 ^optional ^keyName ^keySize
p1
- prompted password if aes256 (or other encryption) is used [p1] -> server.key - Generate a CSR (Certificate Signing Request)
Information will be asked about certificate. Common Name should match hostname e.g. for http://www.google.com value should be www.google.com
openssl req -new -key server.key -out server.csr ^keyName ^csrFile
p2
- Challenge Password [server.key, p2] -> server.csr - Remove Passphrase from Key (if rsa key is encrypted)
cp server.key server.key.org openssl rsa -in server.key.org -out server.key
- Generating a Self-Signed Certificate
[server.csr, server.key] -> server.crt
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
- Converting certificate into PKCS12
openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name default -CAfile server.crt -caname root ^aliasName
p3
- pkcs12 password [server.crt, server.key, p3] -> server.p12 - Import pkcs12 into keystore
-
[server.p12, p2] -> server.jks
keytool -importkeystore -deststorepass <paswd> -destkeypass <paswd> -destkeystore server.jks -srckeystore server.p12 -srcstoretype PKCS12 -srcstorepass <csr paswd> -alias default ^p4 ^p5 ^p2
Verify a Private Key
: sh openssl rsa -check -in server.key
Verify a Private Key Matches a Certificate and CSR
: sh openssl rsa -noout -modulus -in server.key | openssl md5 openssl x509 -noout -modulus -in server.crt | openssl md5 openssl req -noout -modulus -in server.csr | openssl md5
If the output of each command is identical there is an extremely high probability that the private key, certificate, and CSR are related.
Visit following links (self explanatory)
https://myaccount.google.com/lesssecureapps https://accounts.google.com/b/0/DisplayUnlockCaptcha
Port used to connect with ssl : 465 Port used to connect with tls : 587
netstat -plntu
sudo dpkg -i <PATH_TO_DEB_FILE>
sudo apt-get -f install
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $LOGNAME gnome-session)/environ)";
notify-send "TITLE" "YOUR_MESSAGE"
mv /usr/share/dbus-1/services/org.freedesktop.Notifications.service /usr/share/dbus-1/services/org.freedesktop.Notifications.service.disabled`
Open git-bash
ssh-keygen
vim ~/.bashrc
Enter following lines in editor
eval `ssh-agent`
ssh-add
Restart git-bash
rm ~/.bashrc
Close git-bash RSA public key of ssh is present in .ssh directory inside %userprofile%
ssh-keygen -p -N "" -m pem -f /path/to/key
systemd-analyze blame
MSMTP (SMTP client) : >(Documentation could be found at http://msmtp.sourceforge.net/doc/msmtp.html)
```sh
sudo apt-get install msmtp
vim ~/.msmtprc
```
Now in opened editor set default values for all following accounts.
```vi
# Set default values for all following accounts.
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log
# Gmail
account gmail
host smtp.gmail.com
port 587
from [email protected]
user username
password plain-text-password
# A freemail service
account freemail
host smtp.freemail.example
from [email protected]
...
# Set a default account
account default : gmail
```
fetchmail (remote-mail retrieval and forwarding utility intended to be used over on-demand TCP/IP)
... PENDING ...
sudo apt-get install openssh-server
Create a file ~/.ssh/authorized_keys if not exist
touch ~/.ssh/authorized_keys
Append your public key in this file
cat rsa_public_key.pub >> ~/.ssh/authorized_keys
Now you can access this linux from windows by following command
ssh -i rsa_private_key username@ipaddress
You can use ssh-keygen to create public private rsa key pair
find process id of ssh for client
sudo netstat -tnpa | grep ssh
kill process
kill -9 <pid>
Download log-session script
wget http://www.jms1.net/log-session
Find out where the sftp-server binary is located
grep sftp /etc/ssh/sshd_config
Edit log-session file and replace following content
SFTP_SERVER=<location_of_sftp_server>
SFTP_SERVER=/usr/lib/openssh/sftp-server
Make log-session file executable
chmod 755 log-session
Edit ~/.ssh/authorized_keys and append following
command="<location_of_log_session>"
command="/usr/local/sbin/log-session" ssh-dss AAAAB3Nz...
Securing your password (or anything for the secure transmission of information between parties) with public key encryption Install gnupg
sudo apt-get install gnupg
Create key pair (give desired inputs and wait until key is created)
gpg --gen-key
To encrypt
<CMD TO O/P> | gpg -e -r <RECIPIENT>
To decrypt
<CMD TO O/P> | gpg -d
To get list of keys
gpg -k
To get public key
... PENDING ...
wget \
--recursive \
--no-clobber \
--page-requisites \
--html-extension \
--convert-links \
--restrict-file-names=windows \
--domains website.org \
--no-parent \
www.website.org/tutorials/html/
install iptables-persistent
sudo apt-get install iptables-persistent
save iptables configuration with iptables-persistent
sudo iptables-persistent save
sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -I OUTPUT -p tcp -o lo --dport 80 -j REDIRECT --to-ports 8080
lsb_release -a
cat /etc/*-release
uname -a
cat /proc/version
tar -cvzf <filename_with_.tar.gz_extension> <directory_or_file>
tar -xvzf <filename_with_.tar.gz_extension>
tar -cvzf - <file1> <file2> ... <filen>
yum-complete-transaction [--cleanup-only]
yum history redo last
Using caca to view image with characters
: sh sudo apt-get install caca-utils cacaview <any_image_.jpg>
Using fbi which will use framebuffer
: sh sudo apt-get install fbi fbi <any_image_.jpg>
vim /home/$HOME/.local/share/applications/<application_name>
.desktop
[Desktop Entry]
Version=1.0
Name=<Application Name>
Comment=<e.g. Java IDE>
Type=Application
Categories=<e.g. Development;IDE;>
Exec=<application location e.g. /home/${USERNAME}/applications/eclipse/eclipse>
Terminal=false
StartupNotify=true
Icon=<icon location e.g. /home/${USERNAME}/applications/eclipse/icon.xpm>
Name[en_US]=<Application Name e.g. Eclipse>
alpine setup environment
<<<<<<<<<<<<<<<<<<<<<<<<
- create new folder [path-to-wamp]/bin/php/php.#.#.# and copy files here
- copy following files from older php
- php.ini
- phpForApache.ini
- wampserver.conf
- Take snapshots of wamp>PHP>PHP Settings and wamp>PHP>PHP Extendsion
- Open wamp>PHP>php.ini and save it as a backup
- Restart wamp , Change wamp>PHP>Version>latest_version
- Use a diff tool to get differences between old php.ini and new one to satisfy all extensions
- Install apache web server
/etc/apache2/apache2.conf contains configurations /etc/apache2/ports.conf contains ports configuration
sudo apt-get install apache2
- Install PHP
directory for lookup is /var/www/html
sudo apt-get install php5 libapache2-mod-php5
- Install mysql
add following lines in /etc/apache2/apache2.conf
sudo apt-get install mysql-server
#phpMyAdmin Configuration Include /etc/phpmyadmin/apache.conf
- In Ubuntu also need to run following commands to make mcrypt recognized in phpmyadmin/install mcrypt right way
php5enmod mcrypt
-
Install nginx
sudo apt-get install nginx
Edit /etc/nginx/sites-available/default (If /usr/share/nginx/www does not exist, it's probably called html. Make sure you update your configuration appropriately)
- Add index.php to the index line.
- Change the server_name from local host to your domain name or IP address (replace the example.com in the configuration)
- Change the correct lines in “location ~ .php$ {“ section
server { listen 80; root /usr/share/nginx/www; index index.php index.html index.htm; server_name example.com; location / { try_files $uri $uri/ /index.html; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/www; } # pass the PHP scripts to FastCGI server listening on the php-fpm socket location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
-
Install mysql with php-mysql
sudo apt-get install mysql-server php5-mysql
Activate mysql
sudo mysql_install_db
setup script
sudo /usr/bin/mysql_secure_installation
-
Install PHP
sudo apt-get install php5-fpm
Configure php Edit php.ini file vim /etc/php5/fpm/php.ini
cgi.fix_pathinfo=0
Edit /etc/php5/fpm/pool.d/www.conf Find the line,
listen = 127.0.0.1:9000
, and change the127.0.0.1:9000
to/var/run/php5-fpm.sock
.listen = /var/run/php5-fpm.sock
Restart php-fpm
sudo service php5-fpm restart
-
Create info.php
sudo nano /usr/share/nginx/html/info.php
<?php phpinfo(); ?>
restart nginx
sudo service nginx restart
- Download the installer to the current directory
- Verify the installer SHA-384 either by below command or cross checking at https://composer.github.io/pubkeys.html php -r "if (hash('SHA384', file_get_contents('composer-setup.php')) === 'fd26ce67e3b237fffd5e5544b45b0d92c41a4afe3e3f778e942e43ce6be197b9cdc7c251dcde6e2a52297ea269370680') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); }"
- Run the installer php composer-setup.php
- Remove the installer php -r "unlink('composer-setup.php');"
- To install composer Globally move the downloaded file to /usr/local/bin/composer mv composer.phar /usr/local/bin/composer
On Windows
: sh composer global require "laravel/installer"
On Linux using local composer.phar
: sh php composer.phar global require "laravel/installer"
Plugin to add laravel framework in netbeans https://github.com/nbphpcouncil/nb-laravel-plugin/releases
Download .tar.gz file (preferred to be downloaded from oracle's site)
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" <url>
Extract .tar.gz file in /opt directory
tar -zxvf jdk-*u**-linux-****.tar.gz
Create symbolic link in order to simplify java updates in future
ln -s /opt/jdk1.8.0_144 /opt/java
Tell system where java and ts executables are intalled.
update-alternatives --install /usr/bin/java java /opt/java/bin/java 100
update-alternatives --config java
Create necessary environment variables
sudo vim /etc/profile.d/java.sh
if ! echo ${PATH} | grep -q /opt/java/bin ; then
export PATH=/opt/java/bin:${PATH}
fi
if ! echo ${PATH} | grep -q /opt/java/jre/bin ; then
export PATH=/opt/java/jre/bin:${PATH}
fi
export JAVA_HOME=/opt/java
export JRE_HOME=/opt/java/jre
export CLASSPATH=.:/opt/java/lib/tools.jar:/opt/java/jre/lib/rt.jar
sudo chmod 755 /etc/profile.d/java.sh
sudo apt-get purge git;
sudo apt-get autoremove;
now delete related files if exist in your home directory
rm ~/.gitconfig
Edit postgresql.conf file present in c:\program files\postgresql\9.3\data directory Un-comment or add this line:
shared_preload_libraries = '$libdir/plugin_debugger.dll'
Restart PostgreSQL server In the required database run following command
create extension pldbgapi;
Download sources
mvn dependency:sources
Download docs
mvn dependency:resolve -Dclassifier=javadoc
Download sources of specific package
mvn dependency:sources -DincludeArtifactIds=guava
Add plugin in pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
Directly from command line
: mvn exec:java -Dexec.mainClass="com.example.Main" mvn exec:java -Dexec.mainClass="com.example.Main" -Dexec.args="arg0 arg1"
Using plugin
: pom <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <mainClass>com.example.Main</mainClass> <arguments> <argument>foo</argument> <argument>bar</argument> </arguments> </configuration> </plugin>
Reference taken from https://www.howtoforge.com/tutorial/install-mongodb-on-ubuntu-16.04 Importing key
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
Create source list file MongoDB
echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
sudo apt-get install mongodb-org
Create a new mongodb systemd service file in the '/lib/systemd/system' directory.
cd /lib/systemd/system/
vim mongod.service
Now update the systemd service with command below:
systemctl daemon-reload
Start mongodb and add it as service to be started at boot time:
systemctl start mongod
systemctl enable mongod
Further to add mongodb in php
composer require mongodb/mongodb
Edit /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/prometheus/prometheus --config.file=/usr/local/bin/prometheus/prometheus.yml
[Install]
WantedBy=multi-user.target
sudo service prometheus start
-
Method 1
echo manual | sudo tee etc/init.d/lightdm.override
i.e. create .override file to disable it (override it) This method is not working after 14.0
-
Method 2 edit /etc/default/grub replace GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" with GRUB_CMDLINE_LINUX_DEFAULT="text"
sudo update-grub
- Edit /etc/ssh/sshd_config and change following settings
ChallengeResponseAuthentication no PasswordAuthentication no UsePAM no
sudo /etc/init.d/ssh reload
Create ssh-key
ssh-keygen
Copy your .pub file in remote git application from where you want to connect Add your private key using ssh-agent into your system (if you don't want to provide key every time)
ssh-add ~/.ssh/id_rsa
List all apt-get packages versions or list current version of package
: sh apt-get policy nodejs apt-get madison nodejs
Check boot performance | boot services time analysis : ```sh systemd-analyze blame ```
Check systemctl service dependency tree : ```sh systemctl list-dependencies --reverse snapd.socket ```
Getting list of installed packages : ```sh dpkg --get-selections | grep -v deinstall ```
Copying files from one machine to other : ```sh scp /file_in_current_system root@target_machine /path_of_destination ```
Getting information of current distribution : ```sh uname -r cat /etc/*-release lsb_release -a cat /proc/version ```
Download content : curl
Download file : wget
json formatter with stream : jq
Generic syntax highlighter : ```sh pygmentize -l xml sudo apt-get install python-pygments sudo apt-get install python-image ```
Formatter for xml : ```sh sudo apt-get install libxml2-utils xmllint ```
Get info of ip addresses in network (computer name, logged in user etc..) : ```sh sudo apt-get install nbtscan nbtscan 192.168.1.0/24 ```
Network scanner. (find hosts systems and open ports on systems.) : ```sh sudo apt-get install nmap nmap ```
Arbitrary TCP and UDP connections and listens : nc
To record voice : avconv -f pulse -i default file.wav
To edit sam file : chntpw
To get mouse coordinates, open windows etc : xdotool
Controlling audio devices : ```sh amixer -D pulse sset Master 5%+ alsamixer ```
If amixer is not found, install it using below command ```sh sudo apt-get install alsa-utils ```
Control menubar time format or modify anyway : gsettings set com.canonical.indicator.datetime show-seconds true
Remove/Delete file completely (permanently) : shred -zun3 -f
Reduce JPEG file size : jpegoptim
Create Conda Environment : ```sh conda create --name email-sending-env python=3.7 ```
SELECT
DATE_TRUNC('second',NOW()-query_start) AS age,
pg_terminate_backend(pid),
*
FROM
pg_stat_activity
WHERE NOW() - query_start > '00:10:00'
ORDER BY
age DESC;
curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash > ~/.git-auto-complete.bash
source ~/.git-auto-complete.bash
while true; do if [[ $(nc -lp 1234 2> /dev/null) == 'install' ]]; then ./myexec.sh; fi; done
",".join([ str(i) for i in range(1, 102) if int((i + 1) / 2) % 2 != 0])
",".join([ str(i) for i in range(1, 102) if int((i + 1) / 2) % 2 == 0])
-
In virtualbox guest 10.0.2.2 will be the IP of host
-
Accessing guest from host in virtualbox
-
In virtual box settings > Network > Attached to : NAT
- In virtual box settings > Network > Attached to : NAT
- In guest type ifconfig
-
In Ubuntu the packages installed are stored in /var/cache/apt/archives
-
Crontab could be used to schedule tasks in linux. Command to edit crontab is
crontab -e
-
Location to install your own sh files so that it could be used as commands /usr/local/bin/
-
Location to get information of ifconfig or current network or eth* or to get mac addresses is **/sys/class/net/*/address
-
Personal RootCA Certificate : Download
environmentSetupFile=$(mktemp)
if [ -f '.env' ]; then
cat '.env' | while read line; do echo "export $line"; done > "${environmentSetupFile}"
source "${environmentSetupFile}"
rm -f "${environmentSetupFile}"
else
echo '>> .env not found'
exit 1
fi
#!/bin/sh
FILE="/root/default.conf"
COPYLOC="/etc/nginx/http.d/default.conf"
cp -f $FILE $COPYLOC
LT=`stat -c %Z $FILE`;
while true
do
AT=`stat -c %Z $FILE`
if [[ "$AT" != "$LT" ]]; then
cp -f $FILE $COPYLOC
sleep 1
nginx -s reload
LT=$AT
echo `date "+%Y/%m/%d %H:%m:%S"` [reloader] Default config file reloaded
fi
sleep 1
done
import smtplib, ssl
from getpass import getpass
port = 465 # For SSL
smtp_server = "smtp.gmail.com"
sender_email = "[email protected]" # Enter your address
receiver_email = "[email protected]" # Enter receiver address
password = getpass("Type your password and press enter: ")
message = """\
Subject: Hi there
This message is sent from Python.
"""
context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message)
",".join([ str(i) for i in range(1, 102) if int((i + 1) / 2) % 2 != 0])
",".join([ str(i) for i in range(1, 102) if int((i + 1) / 2) % 2 == 0])
window.fzinterceptor = {
predicate: url => (/\/followers\/\?count=/i).test(url),
collectorInitializer: () => []
};
fzinterceptor.collector = fzinterceptor.collectorInitializer()
fzinterceptor.renewCollector = function(newCollector) {
const oldCollector = fzinterceptor.collector
if (!newCollector) {
newCollector = fzinterceptor.collectorInitializer()
}
fzinterceptor.collector = newCollector
return oldCollector;
}
fzinterceptor.executor = (data, collector, url, postData) => {
console.log(url + " : " + postData)
console.log(data)
return [...collector, ...data.users]
}
(function(xhr, fzinterceptor) {
const XHR = XMLHttpRequest.prototype;
const send = XHR.send;
XHR.send = function(postData) {
this.addEventListener('load', function() {
if (fzinterceptor.predicate(this.responseURL)) {
const data = JSON.parse(this.responseText)
const returned = fzinterceptor.executor(data, fzinterceptor.collector, this.responseURL, postData)
if (returned) {
fzinterceptor.collector = returned
}
}
});
return send.apply(this, arguments);
};
})(XMLHttpRequest, fzinterceptor);
Edit Technotes | v2