Awk is a scripting language used for manipulating data and generating reports. The awk command programming language requires no compiling and allows the user to use variables, numeric functions, string functions, and logical operators.
30.30.1.31
kafka-0-external LoadBalancer 10.99.210.158 30.30.1.31 9092:30334/TCP 31d
kubectl get services -n nsxi-platform | grep kafka-0-external| awk '{print $0}'
kafka-0-external LoadBalancer 10.99.210.158 30.30.1.31 9092:30334/TCP 31d
kubectl get services -n nsxi-platform | grep kafka-0-external| awk '{print $1}'
kafka-0-external
Kubectl proxy &
fg
Ctrl C
Configure ip address in Linux?
ip addr add 2001:13:1:2::1/64 dev eth1
ifconfig eth1 up
How to add ipv4 route in Linux ?
route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.18.1.100
root@localhost [ ~ ]# ip r show table main
default via 10.90.137.253 dev eth0 proto dhcp src 10.90.137.240 metric 1024
10.90.136.0/23 dev eth0 proto kernel scope link src 10.90.137.240 initcwnd 20 initrwnd 20
10.90.137.253 dev eth0 proto dhcp scope link src 10.90.137.240 metric 1024 initcwnd 20 initrwnd 20
10.90.137.253 dev eth0 proto dhcp scope link src 10.90.137.240 metric 1024
20.20.0.0/16 dev eth1 proto kernel scope link src 20.20.0.65
30.30.1.0/24 via 20.20.0.1 dev eth1
ip addr del 2001:dead:beef:abcd:c:1:1:1/96 dev eth2
Check if all the interfaces have the right IP.
root@ubuntu-1804:~# ip a
Interpret cron job
https://crontab.guru/
To check cron scheduled:
Crontab -l
To remove cron file:
Crontab -r
https://bradymholt.github.io/cron-expression-descriptor/
Curl commands:
https://confluence.eng.vmware.com/display/NSXALBACE/Curl
https://curl.se/docs/manpage.html
root@systest-runner:~[747]# ps -ef | grep dhcpd
dhcpd 1171 1 0 Apr19 ? 00:02:20 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf eth1
root 23757 23710 0 04:19 pts/0 00:00:00 grep --color=auto dhcpd
root@systest-runner:~[748]#
vsan usage dh -h
and du -sh * --> amount of disk space used by givens or directories
How to restart dns service
[root@olinux1 named]# /etc/init.d/named restart
To update dns server as below
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
Configure dns on Ubuntu
https://www.fosslinux.com/7631/how-to-install-and-configure-dns-on-ubuntu.htm
https://serverfault.com/questions/300438/bind9-failing-to-start
https://www.thegeekstuff.com/2013/12/dns-basics/
How to enable DNS server?
[root@olinux1 ~]# cd /var/named/chroot/var/named
[root@olinux1 named]#
[root@olinux1 named]# service named status
number of zones: 21
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
server is up and running
[root@olinux1 named]#
[root@olinux1 named]#
###Entries in named.tejas.com file
server-1 IN A 172.52.1.2
server-1 IN AAAA 2025:21:1:1::1
How to restart dns service
[root@olinux1 named]# /etc/init.d/named restart
dpkg in Linux is the primary package manager for Debian and Debian-based systems, such as Ubuntu. The tool installs, builds, removes, configures, and retrieves information for Debian packages. The command works with packages in . deb format.
root@ubuntu-1804:~# dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-=============================================================-===================================-===================================-================================================================================================================================
ii accountsservice 0.6.45-1ubuntu1 amd64 query and manipulate user account information
ii acpid 1:2.0.28-1ubuntu1 amd64 Advanced Configuration and Power Interface
How to get the current epoch time
root@systest-runner:~/nlekhak/nsx-qe/spark[36143](master)# python3
Python 3.6.8 (default, Jan 14 2019, 11:02:34)
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
>>> import time
>>> time.time()
1653365200.8654985
>>>
Convert from human-readable date to epoch
>>> import calendar, time; calendar.timegm(time.strptime('2022-05-24 9:50:00', '%Y-%m-%d %H:%M:%S'))
1653385800
>>>
Convert from epoch to human-readable date
>>> epoch = 1653385800
>>> import time; time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime(epoch))
'Tue, 24 May 2022 02:50:00 +0000'
>>>
Replace time.localtime with time.gmtime for GMT time. Or using datetime:
>>> import datetime;
>>> datetime.datetime.utcfromtimestamp(epoch).replace(tzinfo=datetime.timezone.utc)
datetime.datetime(2022, 5, 24, 9, 50, tzinfo=datetime.timezone.utc)
>>>
fallocate is a simple command to allocate disk space by creating a file. Let’s create a file of 100 MiB:
fallocate -l 100M file1.txt
In this case, we’re using the -l argument to represent the length of the file in bytes.
The fallocate command also accepts sizes in human-readable formats like Kilobytes (K), Megabytes (M), and Gigabytes (G).
To check list of open files us lsof.
ulimit -n
65535
lsof | wc -l
12772
To search backward in file:
Shift + G
:1?XXXX
Shift +n
1. To decompress .gz files, use:
gzip -d filename.gz
2. One can unzip and open gz file using:
gunzip archive.gz
3. For .tar.gz/.tgz file try the tar command:
tar -xvf archive.tar.gz
find . -name tecmint.txt
find /home -name tecmint.txt
To count no of file in dir
root@systest-runner:~/IDS-PCAP[61971]# ls -1 | wc -l
1035
To check file size which is less than 100K
find . -type f -size -100K -exec ls -lh {} \; | awk '{ print $9 "|| Size : " $5 }'
Greater than 100K
find . -type f -size +100k -exec ls -lh {} \; | awk '{ print $9 "|| Size : " $5 }'
./UDP-CRITICAL-SAMPLER-final.pcap|| Size : 155K
./wannacry-final.pcap|| Size : 103K
du -ah . | awk ‘$1 ~ /G$/ && $1+0 > 1
1.1G ./correlated-flow-2/00000000000438342060.log
5.1G ./correlated-flow-2
1.1G ./correlated-flow-1/00000000000436623828.log
5.2G ./correlated-flow-1
root@ubuntu-1804:~# find . -name 'sample_*' | xargs rm
find . -mtime +$90 -type f -delete
https://www.tecmint.com/35-practical-examples-of-linux-find-command/
fping is a program like ping which uses the Internet Control Message Protocol (ICMP) echo request to determine if a target host is responding. fping differs from ping in that you can specify any number of targets on the command line, or specify a file
containing the lists of targets to ping. Instead of sending to one target until it times out or replies, fping will send out a ping packet and move on to the next target in a round-robin fashion. In the default mode, if a target replies, it is noted and
removed from the list of targets to check; if a target does not respond within a certain time limit and/or retry limit it is designated as unreachable. fping also supports sending a specified number of pings to a target, or looping indefinitely (as in ping
). Unlike ping, fping is meant to be used in scripts, so its output is designed to be easy to parse
The below command will fping multiple IP address at once and it will display status as alive or unreachable.
root@ubuntu-1804:~# fping 12.1.1.3 12.1.1.30 12.1.1.40
12.1.1.30 is alive
ICMP Host Unreachable from 200.1.0.200 for ICMP Echo sent to 12.1.1.40
ICMP Host Unreachable from 200.1.0.200 for ICMP Echo sent to 12.1.1.40
ICMP Host Unreachable from 200.1.0.200 for ICMP Echo sent to 12.1.1.40
ICMP Host Unreachable from 200.1.0.200 for ICMP Echo sent to 12.1.1.40
12.1.1.40 is unreachable
root@ubuntu-1804:~# ^C
root@ubuntu-1804:~# fping -s -g 12.1.1.1 12.1.1.10
12.1.1.2 is alive
12.1.1.3 is alive
12.1.1.4 is alive
12.1.1.5 is alive
12.1.1.6 is alive
12.1.1.7 is alive
12.1.1.8 is alive
12.1.1.9 is alive
12.1.1.10 is alive
10 targets
10 alive
0 unreachable
0 unknown addresses
0 timeouts (waiting for response)
10 ICMP Echos sent
10 ICMP Echo Replies received
0 other ICMP received
2.63 ms (min round trip time)
3.01 ms (avg round trip time)
3.38 ms (max round trip time)
0.097 sec (elapsed real time)
Fping Complete Network with Different Options
With above command, it will ping complete network and repeat once (-r 1). Sorry, it’s not possible to show output of the command as it is scrolling up my screen with no time.
# fping -g -r 1 192.168.0.0/24
root@ubuntu-1804:/var/www/html# fping -g -r 1 172.17.0.0/16
172.17.0.1 is alive
172.17.0.3 is alive
Reads the List of Targets From a File
We have create a file called fping.txt having IP address (173.194.35.35 and 98.139.183.24) to fping.
# fping < fping.txt
173.194.35.35 is alive
98.139.183.24 is alive
Active and passive FTP config:
======================
https://www.ubuntu1a.com/setup-ftp-server-ubuntu-1a/
for active ftp: ftp <server_ip>
for passive ftp:
root@EP-Inside:~# ftp 40.2.2.1
Connected to 40.2.2.1.
220 (vsFTPd 3.0.2)
Name (40.2.2.1:root): root
530 Please login with USER and PASS.
530 Please login with USER and PASS.
SSL not available
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> binary
200 Switching to Binary mode.
ftp> passive
Passive mode on.
ftp> ls
227 Entering Passive Mode (40,2,2,1,164,31).
150 Here comes the directory listing.
ftp> get 1G
local: 1G remote: 1G
227 Entering Passive Mode (40,2,2,1,204,255).
150 Opening BINARY mode data connection for 1G (aa2047473 bytes).
226 Transfer complete.
aa2047473 bytes received in a.33 secs (10343a.0 kB/s)
ftp> bye
For ftp and ftps traffic:
root@EP-Inside-QP-HA:~# ftp-ssl 11.112.1.2
220 (vsFTPd 3.0.2)
Name (11.112.1.2:root): root
530 Please login with USER and PASS.
530 Please login with USER and PASS.
SSL not available
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> get guide.pdf
local: guide.pdf remote: guide.pdf
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for guide.pdf (20971520 bytes).
226 Transfer complete.
20971520 bytes received in 0.7a secs (26309.7 kB/s)
ftp> bye
221 Goodbye.
root@EP-Inside-QP-HA:~#
root@EP-Inside-QP-HA:~#
or
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
^C
root@topgunoam:~#
Ftp using wget:
wget --tries=1 --bind-address=11.111.1.2 ftps://11.112.1.2/guide.pdf --timeout=360 -d --no-check-certificate --limit-rate=a0k
wget --tries=1 --bind-address=11.101.1.111 https://11.102.1.2/guide.pdf --timeout=360 -d --no-check-certificate --limit-rate=100k
root@EP-Inside-QP-HA:~# wget --tries=1 --bind-address=11.111.1.2 ftps://11.112.1.2/guide.pdf --timeout=360 -d --no-check-certificate --limit-rate=a0k
Setting --check-certificate (checkcertificate) to 0
Setting --limit-rate (limitrate) to a0k
DEBUG output created by Wget 1.15 on linux-gnu.
URI encoding = ‘UTF-a’
ftps://11.112.1.2/guide.pdf: Unsupported scheme ‘ftps’.
try:
root@EP-Inside-QP-HA:~# ftp-ssl 11.112.1.2
root@Ubuntu-Linux-2:/var/ftp# ftp 172.52.1.2
220 (vsFTPd 3.0.3)
Name (172.52.1.2:root):
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp> bye
221 Goodbye.
It was showing login incorrect so I modified vi /etc/ftpusers file. Username mentioned in this files are not allowed for ftp access.
root@Ubuntu-Linux-2:~# ftp 172.52.1.2
220 (vsFTPd 3.0.3)
Name (172.52.1.2:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> bye
221 Goodbye.
To wrap text:
:set wrap
bash-4.2$ zgrep --text ctxteng ./var/run/log/nsx-syslog.3.gz | grep ERROR | more
2022-12-06T09:50:01.838Z nsx-opsagent[268591]: NSX 268591 - [nsx@6876 comp="nsx-esx" subcomp="opsagent" s2comp="ctxteng" tid="268632" level="ERROR" errorCode="CTX1007"] DfwConnector: Failed to SetConnectionAttr for filter 50 1b 39 ea 9c 72 a9 ca-
b8 0c 26 00 37 f1 ef 9c, user: L-501b39ea-9c72-a9ca-b80c-260037f1ef9c:0, process key: 8757137310601753032, status 70
grep -rin "3367"
grep -ri "rdkafka" /var/log/
k logs collector-server-5545589c47-b2nwk | grep /config/sites
[root@nawraj-master ~]# echo -n 'S3ViZXJuZXRlc1JvY2tzIQ==' | base64 -d
KubernetesRocks![root@nawraj-master ~]#
[root@nawraj-master ~]# echo -n 'KubernetesRocks!' | base64
S3ViZXJuZXRlc1JvY2tzIQ==
hping3 is a network tool able to send custom TCP/IP packets and to display target replies like ping program does with ICMP replies. hping3 handle fragmentation, arbitrary packets body and size and can be used in order to transfer files encapsulated under
root@ubuntu-1804:~# hping3 --icmp 12.1.1.4
len=46 ip=12.1.1.4 ttl=61 id=8320 icmp_seq=0 rtt=7.5 ms
len=46 ip=12.1.1.4 ttl=61 id=8556 icmp_seq=1 rtt=6.4 ms
hping3 --scan 1-30,70-90 -S www.vmware.com
Scanning www.vmware.com (10.113.78.20), port 1-30,70-90
51 ports to scan, use -V to see all the replies
+----+-----------+---------+---+-----+-----+-----+
|port| serv name | flags |ttl| id | win | len |
+----+-----------+---------+---+-----+-----+-----+
80 http : .S..A... 52 28284 16385 46
All replies received. Done.
Not responding ports: (1 tcpmux) (2 nbp) (3 ) (4 echo) (5 ) (6 zip) (7 echo) (8 ) (9 discard) (10 ) (11 systat) (12 ) (13 daytime) (14 ) (15 netstat) (16 ) (17 qotd) (18 msp) (19 chargen) (20 ftp-data) (21 ftp) (22 ssh) (23 telnet) (24 ) (25 smtp) (26 ) (27 ) (28 ) (29 ) (30 ) (70 gopher) (71 ) (72 ) (73
root@ubuntu-1804:~# hping3 -S 172.17.53.37 --flood
HPING 172.17.53.37 (eth1 172.17.53.37): S set, 40 headers + 0 data bytes
hping in flood mode, no replies will be shown
How to enable http traffic
Check http service:
root@Ubuntu-Linux-2:/var/www/html# uname -a
Linux Ubuntu-Linux-2 4.a.0-36-generic #36~16.04.1-Ubuntu SMP Sun Feb 5 09:39:57 UTC 2017 xa6_64 xa6_64 xa6_64 GNU/Linux
Make sure apache2 is running on server
root@Ubuntu-Linux-2:~# sudo apt update
root@Ubuntu-Linux-2:~# sudo apt install apache2
Reading package lists... Done
root@Ubuntu-Linux-2:~# sudo ufw app list
Apache
Apache Full
Apache Secure
CUPS
OpenSSH
root@Ubuntu-Linux-2:~# sudo ufw status
Status: inactive
root@Ubuntu-Linux-2:~# sudo systemctl status apache2
● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Thu 2019-05-09 12:41:03 IST; 39min ago
Docs: man:systemd-sysv-generator(a)
CGroup: /system.slice/apache2.service
├─24035 /usr/sbin/apache2 -k start
├─24037 /usr/sbin/apache2 -k start
└─2403a /usr/sbin/apache2 -k start
root@Ubuntu-Linux-2:/var/www/html# service apache2 status
● apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Mon 2019-06-03 13:04:24 IST; 1 weeks 4 days ago
Docs: man:systemd-sysv-generator(a)
Process: 514a ExecReload=/etc/init.d/apache2 reload (code=exited, status=0/SUCCESS)
CGroup: /system.slice/apache2.service
├─1629 /usr/sbin/apache2 -k start
├─5164 /usr/sbin/apache2 -k start
└─5165 /usr/sbin/apache2 -k start
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
Create file under below folder:
root@Ubuntu-Linux-2:/var/www/html# ls -lh
total 11M
-rw-r--r-- 1 root root 10M Jun 14 1a:06 file10
-rw-r--r-- 1 root root 12K May 9 12:40 index.html
Now download the file from client:
root@Ubuntu-Linux-1:~# wget http://172.52.1.2/file10 --limit-rate=20k
--2019-06-14 1a:25:11-- http://172.52.1.2/file10
Connecting to 172.52.1.2:a0... connected.
HTTP request sent, awaiting response... 200 OK
Length: 104a5760 (10M)
Saving to: ‘file10.1’
file10.1 0%[ ] 0 --.-KB/s
file10.1 56%[======================================================> ] 5.70M 20.0KB/s eta 3m 41s
file10.1 57%[======================================================> ] 5.71M 20.0KB/s eta 3m 40s ^C
root@Ubuntu-Linux-1:~#
root@Ubuntu-Linux-1:~#
Download file from client:
--2019-06-14 1a:30:14-- http://172.52.1.2/index.html
Connecting to 172.52.1.2:a0... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11321 (11K) [text/html]
Saving to: ‘index.html.1’
index.html.1 100%[=================================================================================================>] 11.06K 27.6KB/s in 0.4s
2019-06-14 1a:30:14 (27.6 KB/s) - ‘index.html.1’ saved [11321/11321]
root@Ubuntu-Linux-1:~#
Enable apache2 on ubuntu.
root@Ubuntu-Linux-2:/etc# apt-get install apache2
Reading package lists... Done
Building dependency tree
root@Ubuntu-Linux-2:/etc# vi /etc/apache2/apache2.conf
root@Ubuntu-Linux-2:/etc# vi /etc/apache2/apache2.conf
root@Ubuntu-Linux-2:/etc# vi /etc/apache2/wget
root@Ubuntu-Linux-2:/etc# netstat -nlp | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1584/httpd
unix 2 [ ACC ] STREAM LISTENING 158023 15475/pulseaudio /home/cisco/.pulse/b1913782f169dffc104d672300000004-runtime/native
Add 443 as listening port
root@ubuntu-1804:~# cat /etc/apache2/ports.conf
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
Listen 80
Listen 443
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
root@ubuntu-1804:~#
Port 80 is already used so changing port to 8080 for http
root@Ubuntu-Linux-2:/etc# vi /etc/apache2/apache2.conf
root@Ubuntu-Linux-2:/etc# vi /etc/apache2/apache2.conf
root@Ubuntu-Linux-2:/etc# vi /etc/apache2/ports.conf
root@Ubuntu-Linux-2:/etc#
root@Ubuntu-Linux-2:/etc# service apache2 restart
* Restarting web server apache2 [Tue Nov 27 21:47:41 2018] [warn] NameVirtualHost *:8080 has no VirtualHosts
[Tue Nov 27 21:47:41 2018] [warn] NameVirtualHost *:8080 has no VirtualHosts
[ OK ]
root@Ubuntu-Linux-2:/etc# service apache2 status
Apache2 is running (pid 10239).
root@Ubuntu-Linux-2:/etc#
root@Ubuntu-Linux-2:/etc# netstat -nlp | grep 8080
root@Ubuntu-Linux-2:/etc#
root@Ubuntu-Linux-2:/etc#
root@Ubuntu-Linux-2:/etc# netstat -nlp | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1584/httpd
tcp6 0 0 :::8080 :::* LISTEN 10239/apache2
unix 2 [ ACC ] STREAM LISTENING 158023 15475/pulseaudio /home/cisco/.pulse/b1913782f169dffc104d672300000004-runtime/native
root@Ubuntu-Linux-2:/etc#
root@Ubuntu-Linux-2:/var/www# ls -lrt
total 4
-rw-r--r-- 1 root root 177 Nov 27 21:33 index.html
root@Ubuntu-Linux-2:/var/www# ls
index.html
root@Ubuntu-Linux-2:/var/www# vi index.html
root@Ubuntu-Linux-2:/var/www#
root@Ubuntu-Linux-2:/etc/apache2/sites-available# vi /etc/apache2/ports.conf
root@Ubuntu-Linux-2:/etc/apache2/sites-available# cd ../sites-enabled/
root@Ubuntu-Linux-2:/etc/apache2/sites-enabled# ls
000-default
root@Ubuntu-Linux-2:/etc/apache2/sites-enabled# vi 000-default
root@Ubuntu-Linux-2:/etc/apache2/sites-enabled#
root@Ubuntu-Linux-2:/etc/apache2/sites-enabled#
root@Ubuntu-Linux-2:/etc/apache2/sites-enabled#
root@Ubuntu-Linux-2:/etc/apache2/sites-enabled# service apache2 restart
* Restarting web server apache2 ... waiting
Now open the browser and check http://172.52.1.2:8080
For indentation issue:
:set paste
Iperf:
• Open source tool for network performance measurement and tuning.
• It has client and server functionality and can create data streams to measure the throughput between the two ends in one or both directions.
• Client and server can have multiple simultaneous connections (-P option).
Case1: Use data interface
Server:
root@ubuntu-1804:~# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
¸^Croot@ubuntu-1804:~#
Client:
root@ubuntu-1804:~# iperf -c 172.17.65.11
------------------------------------------------------------
Client connecting to 172.17.65.11, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 172.17.22.15 port 47682 connected with 172.17.65.11 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.2 sec 82.0 KBytes 65.6 Kbits/sec
root@ubuntu-1804:~#
So data transfer using TCP is happening at 65.6Kbit/sec
From the above output, you can see that i got a speed of 65kbits/sec. The ouput shows something more.
Interval: Interval specifies the time duration for which the data is transferred.
Transfer: All data transferred using iperf is through memory, and is flushed out after completing the test. So there is no need to clear the transferred file after the test. This column shows the transferred data size.
Bandwidth: This shows the rate of speed with which the data is transferred.
Case2: use mgmt interface. ### see the difference in data transfer rate
root@ubuntu-1804:~# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 20.20.209.42 port 5001 connected with 20.20.203.56 port 38458
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 3.92 GBytes 3.36 Gbits/sec
^Croot@ubuntu-1804:~#
root@ubuntu-1804:~#
root@ubuntu-1804:~# iperf -c 20.20.209.42
------------------------------------------------------------
Client connecting to 20.20.209.42, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 20.20.203.56 port 38458 connected with 20.20.209.42 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 3.92 GBytes 3.36 Gbits/sec
root@ubuntu-1804:~#
Case3: udp test
root@ubuntu-1804:~# iperf -s -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
root@ubuntu-1804:~# iperf3 -c 172.17.65.11 -u -b 100m
iperf3: error - unable to connect to server: Connection refused
root@ubuntu-1804:~# iperf -c 172.17.65.11 -u -b 100m
------------------------------------------------------------
Client connecting to 172.17.65.11, UDP port 5001
Sending 1470 byte datagrams, IPG target: 117.60 us (kalman adjust)
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 172.17.22.15 port 42298 connected with 172.17.65.11 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 119 MBytes 100 Mbits/sec
[ 3] Sent 85033 datagrams
[ 3] WARNING: did not receive ack of last datagram after 10 tries.
root@ubuntu-1804:~#
In the above example, i have used -b option to specify the bandwidth to use(because by default iperf UDP only used 1Mbps, i will recommend using your full available bandwidth to get an idea)
-u options needs to be also used on the client side for specifying UDP traffic.
The ouput tells us the following information.
If we don't specify BW its showing 1Mb
root@ubuntu-1804:~# iperf -c 172.17.65.11 -u
------------------------------------------------------------
Client connecting to 172.17.65.11, UDP port 5001
Sending 1470 byte datagrams, IPG target: 11215.21 us (kalman adjust)
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 172.17.22.15 port 38061 connected with 172.17.65.11 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec
[ 3] Sent 893 datagrams
[ 3] WARNING: did not receive ack of last datagram after 10 tries.
root@ubuntu-1804:~#
Case 4. test on desired port
You can start your iperf server on your desired port with the following method.
?
1 C:\iperf>iperf.exe -s -p 2000
2 ------------------------------------------------------------
3 Server listening on TCP port 2000
4 TCP window size: 64.0 KByte (default)
5 ------------------------------------------------------------
Also you can tell the client to connect to your desired server port and also tweak some more connection and reporting parameter's as shown below.
?
1 root@slashroot2 ~]# iperf -c 192.168.0.101 -t 20 -p 2000 -w 40k
2
3 ------------------------------------------------------------
4 Client connecting to 192.168.0.101, TCP port 2000
5 TCP window size: 80.0 KByte (WARNING: requested 40.0 KByte)
6 ------------------------------------------------------------
7 [ 3] local 192.168.0.1[02 port 60961 connected with 192.168.0.101 port 2000
8 [ ID] Interval Transfer Bandwidth
9 [ 3] 0.0-20.0 sec 1.74 GBytes 747 Mbits/sec
-t option used in the above command tells to transfer data for 20 seconds.
-p will tell the client to connect the port 2000 on the server
-w will specify your desired window size value. As i told before, window size tuning will improve TCP transfer rate to a certain extent.
And you can clearly see from the above output that the bandwidth for the whole transfer has increased, as we have increased the window size(I am using two virtual machine's in one physical box for this iperf demonstration, which is the reason am getting exceptional transfer rate's).
You can also tell the iperf client to show the transfer rate at an interval of 1 second, for the whole 10 second transfer, as shown below with -i option.
iperf -c 192.168.0.100 -P 1 -i 1
Case 5: Parallel connections
Let's check the throughput report by increasing the number of parallel connections using "iperf".
iperf -c 192.168.0.100 -P 20
Server command
root@jumphost:~# iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Client command
root@jumphost:~# iperf3 -c 192.184.56.217 -t 10
Connecting to host 192.184.56.217, port 5201
[ 4] local 172.16.10.5 port 42998 connected to 192.184.56.217 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 614 MBytes 5.15 Gbits/sec 828 1.19 MBytes
[ 4] 1.00-2.00 sec 399 MBytes 3.34 Gbits/sec 159 668 KBytes
[ 4] 2.00-3.00 sec 458 MBytes 3.84 Gbits/sec 0 1.03 MBytes
[ 4] 3.00-4.00 sec 499 MBytes 4.19 Gbits/sec 73 1.10 MBytes
[ 4] 4.00-5.00 sec 448 MBytes 3.75 Gbits/sec 81 816 KBytes
[ 4] 5.00-6.00 sec 456 MBytes 3.83 Gbits/sec 10 885 KBytes
[ 4] 6.00-7.00 sec 462 MBytes 3.88 Gbits/sec 0 1.19 MBytes
[ 4] 7.00-8.00 sec 586 MBytes 4.92 Gbits/sec 5 1.06 MBytes
[ 4] 8.00-9.00 sec 485 MBytes 4.07 Gbits/sec 18 1.02 MBytes
[ 4] 9.00-10.00 sec 440 MBytes 3.69 Gbits/sec 113 860 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 4.73 GBytes 4.07 Gbits/sec 1287 sender
[ 4] 0.00-10.00 sec 4.73 GBytes 4.06 Gbits/sec receiver
Iptables:
Configure NAT on runner to access app from UI
iptables -t nat -A PREROUTING -p tcp -d 10.90.137.222 --dport 4431 -j DNAT --to-destination 20.20.0.10:443
iptables -t nat -A POSTROUTING -p tcp -d 20.20.0.10 -j MASQUERADE
For communication between VC and DHCP
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface eth1 -j ACCEPT
To check and flush iptables
//list nat table
iptables --table nat --list
//clear nat table
iptables --table nat --flush
Within same host, just forward port using REDIRECT
iptables --table nat --append PREROUTING --protocol tcp --dport a0 --jump REDIRECT --to a0a0
To forward both ip and port. We need destination routing called PREROUTING and SNAT called POSTROUTING in reverse direction.
A ---> B(192.168.254.47:81)> C (192.168.254.10:8080)
A
//A:55 -> B:81
B
//A:55 -> B:81
//A:55 -> C:8080
//B:81 -> C:8080
##PREROUTING (Destination NAT )
sudo iptables --in-interface wlan0 --append PREROUTING --table nat --protocol tcp --destination 192.168.254.47 --dport a1 --jump DNAT --to-destination 192.168.254.10:8080
##POST ROUTING (Source NAT ) in reverse direction
sudo iptables --append POSTROUTING --table nat --protocol tcp --destination 192.168.254.10 --dport 8080 --jump SNAT --to-source 192.168.254.47
or
sudo iptables -t nat -A POSTROUTING -p tcp --dport 81 -j MASQUERADE
Note: If ip address are dynamic then we need to use MASQUERADE else not required. MASQUERADE is an iptables target that can be used instead of SNAT target (source NAT) when external ip of the inet interface is not known at the moment of writing the rule (when server gets external ip dynamically).
or
socat TCP-LISTEN:4431,fork TCP:20.20.0.30:443
ITerm:
Split Panes
The shortcuts cmd-d and cmd-shift-d divide an existing session vertically or horizontally, respectively.
netcat
The nc (or netcat) utility is used for just about anything under the sun involving TCP, UDP, or UNIX-domain sockets. It can open TCP connections, send UDP packets, listen on arbitrary TCP and UDP ports, do port scanning, and deal with both IPv4 and IPv6.
Unlike telnet(1), nc scripts nicely, and separates error messages onto standard error instead of sending them to standard output, as telnet(1) does with some.
Port scanning
Netcat is a featured networking utility which reads and writes data across network connections, using the TCP/IP protocol.
Port scanning
netcat -z -v [host] [port]
#Example testing connectivity to port 443 of google.com
$ netcat -z -v google.com 443
root@systest-runner:~/nlekhak/nsx-qe/spark[35525](spark_nsx-impactor32)# netcat -z -v google.com 443
Connection to google.com 443 port [tcp/https] succeeded!
Example netcat test of port 2049 over tcp ( run from an ESXi host)
nc -z 192.168.0.100 2049
Connection to 192.168.0.100 2049 port [tcp/http] succeeded!
The netstat command generates displays that show network status and protocol statistics. You can display the status of TCP and UDP endpoints in table format, routing table information, and interface information. netstat displays various types of network data depending on the command line option selected.
root@ubuntu-1804:~# netstat -anp | grep -i est
Active Internet connections (servers and established)
tcp 0 0 20.20.190.101:22 20.20.164.120:45274 ESTABLISHED 635/sshd: root@pts/
tcp 0 0 20.20.190.101:22 20.20.164.120:55002 ESTABLISHED 32226/sshd: root@no
tcp 0 0 20.20.190.101:22 20.20.164.120:59482 ESTABLISHED 32426/sshd: root@no
root@ubuntu-1804:~# netstat -anp | grep 7080
root@ubuntu-1804:~#
--- Connections Details on Source VM -inc_1_u1804-inc_1_nesx70-esx_outer_1_0_15,
--- Nothing found on 7080
root@ubuntu-1804:~# netstat -anpw
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
root@nsx-mgr-0:~# netstat -an | grep 9092
tcp 0 0 20.20.0.10:47576 30.30.128.9:9092 ESTABLISHED
tcp 0 0 20.20.0.10:47170 30.30.128.9:9092 ESTABLISHED
root@nsx-mgr-0:~# netstat -nat | grep 1234
tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN
tcp 0 0 20.20.0.11:1234 20.20.230.114:54176 ESTABLISHED
tcp 0 0 20.20.0.11:1234 20.20.254.190:58749 ESTABLISHED
To check which all ports are listening on server:
root@client-ubuntu:/etc# sudo lsof -i -n -P | grep LISTEN
systemd-r 643 systemd-resolve 13u IPv4 17611 0t0 TCP 127.0.0.53:53 (LISTEN)
vsftpd 759 root 3u IPv6 21071 0t0 TCP *:21 (LISTEN)
sshd 7a4 root 3u IPv4 a362254 0t0 TCP *:22 (LISTEN)
sshd 7a4 root 4u IPv6 a362256 0t0 TCP *:22 (LISTEN)
apache2 a55 root 4u IPv6 22102 0t0 TCP *:a0 (LISTEN)
apache2 a55 root 6u IPv6 22106 0t0 TCP *:443 (LISTEN)
cupsd 16539 root 6u IPv6 95162a4 0t0 TCP [::1]:631 (LISTEN)
cupsd 16539 root 7u IPv4 95162a5 0t0 TCP 127.0.0.1:631 (LISTEN)
apache2 16559 www-data 4u IPv6 22102 0t0 TCP *:a0 (LISTEN)
apache2 16559 www-data 6u IPv6 22106 0t0 TCP *:443 (LISTEN)
apache2 16560 www-data 4u IPv6 22102 0t0 TCP *:a0 (LISTEN)
apache2 16560 www-data 6u IPv6 22106 0t0 TCP *:443 (LISTEN)
root@client-ubuntu:/etc#
root@ubuntu-1804:~# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 ubuntu-1804:ssh systest-runner:38842 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 1958810 /run/user/0/systemd/notify
unix 3 [ ] DGRAM 13499 /run/systemd/notify
unix 7 [ ] DGRAM 13520 /run/systemd/journal/socket
unix 10 [ ] DGRAM 13525 /run/systemd/journal/dev-log
unix 2 [ ] DGRAM 13530 /run/systemd/journal/syslog
unix 3 [ ] STREAM CONNECTED 18667
unix 3 [ ] DGRAM 12871
List All TCP Ports
List all TCP ports by running:
root@ubuntu-1804:~# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:5678 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ftp 0.0.0.0:* LISTEN
tcp 0 0 localhost:domain 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 ubuntu-1804:ssh systest-runner:38842 ESTABLISHED
tcp6 0 0 [::]:12865 [::]:* LISTEN
root@ubuntu-1804:~#
List All UDP Ports
root@ubuntu-1804:~# netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 localhost:domain 0.0.0.0:*
udp 0 0 0.0.0.0:bootpc 0.0.0.0:*
udp 0 0 ubuntu-1804:ntp 0.0.0.0:*
udp 0 0 ubuntu-1804:ntp 0.0.0.0:*
udp 0 0 localhost:ntp 0.0.0.0:*
udp 0 0 0.0.0.0:ntp 0.0.0.0:*
udp6 0 0 ubuntu-1804:ntp [::]:*
udp6 0 0 ubuntu-1804:ntp [::]:*
udp6 0 0 ubuntu-1804:ntp [::]:*
udp6 0 0 localhost:ntp [::]:*
udp6 0 0 [::]:ntp [::]:*
root@ubuntu-1804:~#
List Only Listening Ports
To return a list of only listening ports for all protocols, use:
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 13540 /run/systemd/fsck.progress
unix 2 [ ACC ] SEQPACKET LISTENING 13536 /run/udev/control
unix 2 [ ACC ] STREAM LISTENING 1958813 /run/user/0/systemd/private
unix 2 [ ACC ] STREAM LISTENING 1958817 /run/user/0/gnupg/S.gpg-agent.browser
unix 2 [ ACC ] STREAM LISTENING 1958818 /run/user/0/gnupg/S.gpg-agent
unix 2 [ ACC ] STREAM LISTENING 1958819 /run/user/0/gnupg/S.gpg-agent.ssh
unix 2 [ ACC ] STREAM LISTENING 1958820 /run/user/0/gnupg/S.dirmngr
unix 2 [ ACC ] STREAM LISTENING 1958821 /run/user/0/gnupg/S.gpg-agent.extra
unix 2 [ ACC ] STREAM LISTENING 15986 @irqbalance579.sock
unix 2 [ ACC ] STREAM LISTENING 15153 /var/run/vmware/guestServicePipe
unix 2 [ ACC ] STREAM LISTENING 15201 /run/uuidd/request
unix 2 [ ACC ] STREAM LISTENING 15207 /var/run/dbus/system_bus_socket
unix 2 [ ACC ] STREAM LISTENING 15214 /run/acpid.socket
unix 2 [ ACC ] STREAM LISTENING 19865 /var/run/.vmw_conn_notify_socket
unix 2 [ ACC ] STREAM LISTENING 13502 /run/systemd/private
unix 2 [ ACC ] STREAM LISTENING 13518 /run/systemd/journal/stdout
root@ubuntu-1804:~#
To enable nfs on server:
Systemctl enable --now ngs-server
Rpm -q nfs-utils
Mkdir -p /srv/nfs/storage
Who all can access
/srv/nfs/storage 192.168.100.0/24(rw sync insecure)
To install cronos
Python3 setup.py install
Since it is running as daemen ..we need to configure it
root@systest-runner:~[33656]# cd /etc/cr
cracklib/ cron.d/ cron.daily/ cron.hourly/ cron.monthly/ cron.weekly/
• crontab -e To edit current user’s crontab file
• crontab -l To display contents of the crontab file
• crontab -u [username] To edit any other user’s crontab file
• crontab -r To remove the crontab file of the current user’s
crontab -i To display a prompt before removing the current user’s crontab file
Git commands every automation QA engineer should know
git add -p Allows you to select which changes to add to the staging area.
git commit -m "Commit message" Allows you to specify a custom commit message.
git status -v Provides more detailed information about the status of the repository.
git branch -a Lists all branches in the repository, including remote branches.
git checkout -b <new_branch_name> Creates a new branch and switches to it.
git merge <branch_name> Merges the specified branch into the current branch.
git push origin <branch_name> Pushes the current branch to the remote repository called "origin".
git fetch origin Fetches changes from the remote repository called "origin".
git reset --hard <commit_hash> Resets the working directory to the specified commit.
git checkout . Undoes changes to all files in the working directory.
git log --oneline Displays the history of commits in a single line format.
git stash Saves the current state of the working directory to the stash.
git stash pop Restores the current state of the working directory from the stash.
git branch -d <local_branch_name> allows you to delete a local branch only if you’re currently not in and viewing or having unpushed commits or unmerged changes.
git branch -D <local_branch_name> Here -D is an alias for - - delete - - force It deletes a local branch fircefully even after having unmerged changes (use this with caution⛔️)
git push origin -d <remote_branch_name> allows you to delete a remote branch in remote repo named origin
Additional tips
Use a consistent naming convention for your branches. This will make it easier to track your changes and identify which branch is associated with a particular feature or bug fix.
Use descriptive commit messages. This will help you and others understand what changes were made in each commit.
Use a pull request workflow. This will allow you to get feedback on your changes before merging them into the main branch.
Use a continuous integration server. This will help you to automatically test your code after each commit.
mPycharm tips
In MAC Alt is Option
to find some script: Ctrl + Shift + F
Cmd B ## to see the class or function in use
Cmd Shift + to expand complete file Cmd Shift - to collapse complete file
Cmd + to expand code
Cmd - to collapse block of code
For comment and un-comment Cmd /
Auto complete/help Ctrl Space
Full select
Option + Cmd + T
To select line continuously Shift + Option ->
Option + Enter to fix typo error
to fix error: alt + enter
Command shift + == to exapnd all for particular def : shift - or +
Command shift - == to collaspe all ctrl + space for help
double shift to find script in pycharm
Programs:
=========
Python3 program to Find missing # integers in list
>>> def find_missing(lst):
... return sorted(set(range(lst[0],lst[-1]) - set(lst)))
...
>>> lst = [1, 2, 4, 6, 7, 9, 10]
>>> lst
[1, 2, 4, 6, 7, 9, 10]
>>>
## Validate IP
>>> def validate_ip(IP):
... import re
... res = re.match("([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$", IP)
... if res == None:
... return "Invalid IP address"
... else:
... oct1 = res.group(1)
... oct2 = res.group(2)
... oct3 = res.group(3)
... oct4 = res.group(4)
... if int(oct1) > 255 or int(oct2) > 255 or int(oct3) > 255 or int(oct4) > 255:
... print("Input {} is wrong".format(IP))
... else:
... print("Input {} is correct".format(IP))
...
>>> IP = "192.168.0.280"
>>> validate_ip(IP)
Input 192.168.0.280 is wrong
>>>
>>> IP = "192.168.0.280.."
>>> validate_ip(IP)
'Invalid IP address'
>>>
>>> IP = "0.0.0.0"
>>> validate_ip(IP)
Input 0.0.0.0 is correct
>>>
>>> IP = "255.255.255.255"
>>> validate_ip(IP)
Input 255.255.255.255 is correct
>>>
If you have a dictionary like this -> d1={“k1′′:10,”k2′′:20,”k3”:30}. How would you increment values of all the keys ?
>>> d1={"k1":10,"k2":20,"k3":30}
>>> d1.keys()
dict_keys(['k1', 'k2', 'k3'])
>>>
>>> for i in d1.keys():
... d1[i] += 1
...
>>> d1
{'k1': 11, 'k2': 21, 'k3': 31}
>>>
## How to create dictionary from two lists
>>> keys = ["a", "b", "c"]
>>> values = [1,2,3]
>>> res = {keys[i]: values[i] for i in range(len(keys))}
>>> res
{'a': 1, 'b': 2, 'c': 3}
>>>
>>>
>>> dict(zip(keys,values))
{'a': 1, 'b': 2, 'c': 3}
>>>
Write a one-liner that will count the number of capital letters in a file. Your code should work even if the file is too big to fit in memory.
nlekhak@nlekhak-a01 Downloads % python3
Python 3.8.9 (default, Mar 30 2022, 13:51:17)
[Clang 13.1.6 (clang-1316.0.21.2.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> with open("/Users/nlekhak/Downloads/debug.txt", "r") as f:
... count = 0
... text = f.read()
... for char in text:
... if char.isupper():
... count += 1
... print(count)
...
128
>>>
How can you find the minimum and maximum values present in a tuple?
• >>> tup1 = (1,2,3,4,5) >>>
• >>> min(tup1) 1
>>>
• >>> tup2 = (1,2,3,4,5)
• >>> max(tup2) 5
>>>
>>>
If you have a list like this -> [1,”a”,2,”b”,3,”c”]. How can you access the 2nd, 4th and 5th elements from this list?
>>> lst = [1,"a",2,"b",3,"c"]
>>> lst
[1, 'a', 2, 'b', 3, 'c']
>>>
>>> indices = [1,3,4]
>>>
>>> for i in indices:
... print(lst[i])
...
a
b
3
>>>
Write a python program to print the following pattern ->
>>> for i in range(1,6):
... print(str(i)*i)
...
1
22
333
4444
55555
Pyramid pattern of numbers
>>> rows = 5
>>> for i in range(1, rows+1):
... for j in range(1, i+1):
... print(j, end="")
... print("")
...
1
12
123
1234
12345
>>>
How do we convert the string to lowercase? str = 'XYZ'
print(str.lower())
Write Python code to sort a numerical dataset?
The code to sort a numerical dataset is as follows:
list = [ "13", "16", "1", "5" , "8"] list = [int(x) for x in list] list.sort()
print(list)
## on list sort will only work on integers ## set don’t have sort attribute
Create a single string from all the elements in the list
x = ["Mindmajix", "Online", "Training"] print(" ".join(x))
Check the memory usage of an object
import sys
x = 10 print(sys.getsizeof(x))
Find the most frequent value in a list
test = [1, 2, 3, 9, 2, 7, 3, 5, 9, 9, 9] print(max(set(test), key = test.count))
You are working on a Python script that compares data within sets. Given the following sets, what code can you provide to determine if A is a superset of B?
A = {1, 2, 3, 4, 5}
B = {1, 2, 3} C = {1, 2, 3}
print(A.issuperset(B))
What is the Python syntax for defining an empty set literal?
set()
## Remove
animals = ['cat', 'dog', 'chicken', 'rooster', 'cat', 'cow', 'horse', 'cat', 'bird',
'cat']
>>> animals.remove('cat')
>>>
>>> animals
['dog', 'chicken', 'rooster', 'cat', 'cow', 'horse', 'cat', 'bird', 'cat']
## removes the first match element found
Which data structure can you use as keys for your dictionary? tuple
What syntax in functions would you use to pass a varied number of non- keyword arguments?
*args
## byte object are machine readable strings on python ##normal string what we used it human readable string
Remember:
● str(variable)convertsvariabletoastring.
● byte(variable)convertsvariabletoabytesobject.
Also:
● variable.decode()convertsvariabletoastring.
● variable.encode()convertsvariabletoabytesobject.
# Implement your function below. non repeating char in string
... cnt = {}
... for c in str:
... if c in cnt:
... cnt[c] += 1
... else:
... cnt[c] = 1
... for c in str:
... if cnt[c] == 1:
... return c
... return None
...
>>>
>>> non_repeating("abcab")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'non_repeating' is not defined
>>> non_repeat("abcab")
'c'
>>> non_repeat("abab")
>>>
>>> non_repeat("aabbbc")
'c'
>>>
>>> non_repeat("aabbdbc")
'd'
>>>
Find common elements between lists.
• >>> list_a1 = [1, 3, 4, 6, 7, 9]
• >>> list_a2 = [1, 2, 4, 5, 9, 10] >>>
• >>> set(list_a1).intersection(set(list_a2))
• {1, 4, 9}
>>>
## Most frequent element
• >>> list1 = [1, 3, 1, 3, 2, 1] >>>
• >>> print(max(set(list1), key = list1.count))
• 1
Question: How a file is deleted in Python?
Answer: The file can be deleted by either of these commands:
os.remove(filename)
os.unlink(filename)
Question: What are Python modules?
Answer: A file containing Python code like functions and variables is a Python module. A Python module is an executable file with a .py extension.
Python has built-in modules some of which are:
● os
● sys
● math
● random
● datatime
● JSON
Screen:
To create new screen: screen -S nlekhak
To reconnect same screen -rd nlekhak
To check all created screen: screen -ls
To login to others screen: screen -xs nlekhak
root@systest-runner:~[63085]# screen -ls
There are screens on:
29356.lekhak1 (11/28/2022 11:42:03 PM) (Detached)
root@systest-runner:~[63076]# screen -X -S 29356 quit
root@systest-runner:~[63077]#
To check which screen you are in:
# echo $STY
19401.lekhak1