Useful when we need to add cron entry using shell script
cron.sh
crontab -l > /tmp/cron.bak
echo "* * * * * /opt/backup.sh" >> /tmp/cron.bak
crontab /tmp/cron.bak
Useful when we need to add cron entry using shell script
cron.sh
crontab -l > /tmp/cron.bak
echo "* * * * * /opt/backup.sh" >> /tmp/cron.bak
crontab /tmp/cron.bak
Docker
Jenkins
Kubernetes
Terraform
Ansible
General questions
AWS questions
Linux questions
wsl -l
wsl --set-default Ubuntu
wsl --set-default-version 2
wsl -l -v
wsl --set-version Ubuntu 2
create /etc/wsl.conf
[automount]
options = "metadata"
update /etc/kong/kong.conf
smtp_mock=off
smtp_host=email-smtp.eu-west-1.amazonaws.com
smtp_port=465
smtp_username=${KONG_SMTP_USER}
smtp_password=${KONG_SMTP_PASSWORD}
smtp_ssl=on
smtp_domain=example.com
[email protected]
admin_emails_from =Team1 <[email protected]>
portal_invite_email=Team1 <[email protected]>
portal_access_request_email=Team1 <[email protected]>
portal_approved_email=on
portal_emails_from=Team1 <[email protected]>
portal_emails_reply_to=Team1 <[email protected]>
Note : [email protected] should verified in AWS and It’s should be below format
Team1 <[email protected]>
Why?
– Optimize size
– less surface attack
FROM rust:slim-buster AS build
WORKDIR /opt
COPY . .
RUN rustup target add x86_64-unknown-linux-musl
RUN cargo build --target x86_64-unknown-linux-musl --release
FROM alpine:3.15.0
WORKDIR /opt
COPY --from=build /opt/target/x86_64-unknown-linux-musl/release .
EXPOSE 7878
CMD ["/opt/simple-rust-webserver"]
docker build -t rust-web-alpine -f alpine.Dockerfile .
docker run -d -p 7878:7878 rust-web-alpine
[root@lp-test-1 simple-rust-webserver]# docker images | grep rust-web-alpine
rust-web-alpine latest 7dd00663078c 9 minutes ago 9.4MB
main.rs
use std::net::{TcpStream, TcpListener};
use std::io::{Read, Write};
use std::thread;
fn handle_read(mut stream: &TcpStream) {
let mut buf = [0u8 ;4096];
match stream.read(&mut buf) {
Ok(_) => {
let req_str = String::from_utf8_lossy(&buf);
println!("{}", req_str);
},
Err(e) => println!("Unable to read stream: {}", e),
}
}
fn handle_write(mut stream: TcpStream) {
let response = b"HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=UTF-8\r\n\r\n<html><body>hola rust</body></html>\r\n";
match stream.write(response) {
Ok(_) => println!("Response sent"),
Err(e) => println!("Failed sending response: {}", e),
}
}
fn handle_client(stream: TcpStream) {
handle_read(&stream);
handle_write(stream);
}
fn main() {
let listener = TcpListener::bind("0.0.0.0:7878").unwrap();
println!("Listening for connections on port {}", 7878);
for stream in listener.incoming() {
match stream {
Ok(stream) => {
thread::spawn(|| {
handle_client(stream)
});
}
Err(e) => {
println!("Unable to connect: {}", e);
}
}
}
}
More : https://users.rust-lang.org/t/building-executable-for-alpine-linux/13568
import smtplib
email_user = '<aws-ses-user>'
email_password = '<aws-ses-password>'
sent_from = '"test" <[email protected]>' #This should be verified
to = ['[email protected]']
subject = 'test'
body = 'test'
email_text = """\
From: %s
To: %s
Subject: %s
%s
""" % (sent_from, ", ".join(to), subject, body)
try:
smtp_server = smtplib.SMTP_SSL('email-smtp.ap-south-1.amazonaws.com', 465)
smtp_server.ehlo()
smtp_server.login(email_user, email_password)
smtp_server.sendmail(sent_from, to, email_text)
smtp_server.close()
print ("Email sent successfully!")
except Exception as ex:
print ("Something went wrong….",ex)
Issues and error messages:
Manage Jenkins > Configure system > search “E-mail Notification”
gmail smtp server: smtp.gmail.com
port : 587 need TLS
Note: Allow google Less Secure App(should be turned on).
email.Jenkinsfile
pipeline
{
agent { label 'worker1' }
stages{
stage('send-email'){
steps{
script
{
emailext subject: 'Test email subject', body: 'Test email body', to: '[email protected]'
}
sh "echo hola"
}
}
}
}