If you are sure the binary/program exists, it could be that your PATH variable is broken or not set.
Just do this to set most of the common paths:
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
There's no risk to the above, because it just takes your current PATH variable and adds more to what is already existing.
To make this permanent you can add this to your ~/.bashrc file........
find /usr/share/zoneinfo/|sed s#"/usr/share/zoneinfo/"##g|grep "/"|grep -v posix|grep -v ^"Etc/"|grep -v ^right|grep -v ^"SystemV"
Africa/Addis_Ababa
Africa/Abidjan
Africa/Blantyre
Africa/Lusaka
Africa/Casablanca
Africa/Libreville
Africa/Asmara
Africa/Bujumbura
Africa/Dakar
Africa/Lagos
Africa/Malabo
Africa/Harare
Africa/Kigali........
Step 1.) Upgrade to Debian 11 first
The process to go to Debian 12 is not as smooth as 11, when trying to upgrade from Debian 10. In fact, it doesn't work directly, so you'll first need to follow this guide to update to Debian 11, reboot and come back here if successful.
Step 2.) Update sources.list
Update your /etc/apt/sources.list like this:
deb http://........
The issue is that Docker images are stripped down, so many tools and even python3 is missing, so you'll have to build or update the actual image yourself.
I assume you have started an image with something like this and that you have the Nvidia Toolkit installed (assuming you are using GPUs). If you're not using nvidia just remove --runtime=nvidia --gpus all.
docker run -it --runtime=nvidia --gpus all ubuntu bash
These works for most images li........
The issue is when you need to echo something as root/sudo, that it doesn't work. You can never do a sudo echo to an output file as you'd expect.
Take an example to clear out wasted RAM buffers/cache like this:
sudo echo 1 > /proc/sys/vm/drop_caches
-bash: /proc/sys/vm/drop_caches: Permission denied
The solution is to run tee as sudo/root
What we do is echo 1, but then pipe it to the "tee" command as sudo........
So you started a process or other important task that is remote but it is in the foreground and on a pts. This means if you background with Ctrl + Z or otherwise logout or get disconnected that the process will be stopped.
Here is how you can solve the problem:
1.) Hit Ctrl + Z to suspend the process.
2.) Type bg to restore the process into the background. If you do a ps aux on the process you will see it was restored with the & at the end, which puts........
Getting this error "bash: apt-add-repository: command not found"?
You need to install the software-properties-common to solve the error:
sudo apt-get install software-properties-common........
If you get this error, it's usually because you don't have coreutils installed.
-bash: expr: command not found
Install coreutils and you'll be good:
apt-get -y install coreutils........
In this example we install debian 10 with --variant=minbase which gives us a minimal/tiny install. Don't use variant if you want the full size install.
mkdir /tmp/deb10files
debootstrap --variant=minbase buster /tmp/deb10files/
Did you get an error?
debootstrap --variant=minbase buster /home/theuser/VMs/deb10files/
You'll get this error if you make a directory in your home........
Later versions of ls try to be helpful and smart to prevent errors in dealing with files with spaces that were tradtionally a pain.
However if you need the raw/real filenames, this can break scripts or if you are pasting into a csv etc....
How do you make ls not add the quotes?
Add the capital "-N" switch
ls -N
You could also add an alias to make it more permanent
Do this to add it to ~/........
Sometimes manual intervention on various Linux system's, including Debian, is required to fix things after waking up from sleep.
One persistent issue is the sound system / pulseaudio needing to be reset and not working until you do that after waking up. It's not clear if it's an OS issue itself or the sound driver, but this will fix things.
Where do we put scripts or commands that need to be used upon wakeup automatically?
/lib/systemd/syst........
If you are using mint, delete the preference that stops snap from installing (as it is required for lxc)
sudo rm /etc/apt/preferences.d/nosnap.pref
1. Install lxd:
sudo apt install lxd
Issues install lxd or errors? Click here
Debian at this time does not have lxd so you'll need to use snap:
sudo apt in........
The Best Docker Tutorial for Beginners
We quickly explain the basic Docker concepts and show you how to do the most common tasks from starting your first container, to making custom images, a Docker Swarm Cluster Tutorial, docker compose and Docker buildfiles.........
How To Install Wazuh Server / Quickest Installation
Wazuh (forked from the well known OSSEC project) is a full SIEM (Security Information Event Management) that works extremely well with the platforms it natively supports as an "Agent", which allows you to do scans of everything such as all processes running, CVE vulnerability check, incident reporting etc...
Prerequisites:
A lot of issues with Wazuh seem to be caused by i........
Just edit your ~/.bashrc and add this at the very end:
export PS1="realtechtalk.com"
Then your prompt will look like this:
bladeblox:uptime
08:47:14 up 48 min, 1 user, load average: 1.00, 1.07, 0.96
If you wanted a dollar sign at the end then you would change it like this:
export PS1=&........
$ ./test.sh
bash: ./test.sh: Permission denied
This happens normally because you are on a partition that was mounted as "user" and without the exec option. Also be sure to add exec at the end so no other options set noexec.
Change your fstab or add exec to your mount options:
/dev/md127 /mnt/md127 ext4 auto,nofail,noatime,rw,user,exec 0 0
........
apt install software-properties-common
add-apt-repository ppa:deadsnakes/ppa
apt update
apt install python3-pip
apt install python3.7 curl gnupg python3.7-dev git
ln -s /usr/bin/python3.7 /usr/bin/python3
pip3 install numpy keras_preprocessing
curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel........
This is sure simple if you follow the guide but it took a lot of hacking around to make this work on Debian/Ubuntu!
Now before you ask why bother running wine and python, the reason is because Python executables are NOT cross-platform. If you run pyinstaller in Linux, that binary will only run on Linux and the same if you do it in Windows. So it is preferable if you have a single environment that you can create Linux and Windows binaries from rather than running 2 separate........
It is fairly simple to use once you know how to use it. However, the tricky thing is that by default it doesn't seem to be active or listen on any interface on manually specified.
How To Install ifplugd
First we install ifplugd
sudo apt install ifplugd
Let's enable it on our desired device(s)
vi /etc/default/ifplugd
set this line as so:........
The reason we use the command below is because we need the md5sum value hash of the password. This means that we cannot use the md5sum
Change "yournewpass" to the pass you want to set
echo -n "yournewpass" | md5sum
Then you get the md5sum hash of whatever you entered eg. in this case "yournewpass"
5a9351ed00c7d484486c571e7a78c913 ........
Most of us know the heredoc method but what if you need a basic query done repeatedly and manually while working from bash? It is a pain to manually type mysql and login each time.
With this command below you can semi-automate those queries:
echo "use somedb; select * from auctions" | mysql -u root --password="yourpassword"
Just modify the above to suit your needs and you can add more queries by adding a sem........
Adjust to suit your needs. Currently this would kill any whois process running for more than 30 seconds or more than 1 minute.
Add it as a cronjob. The motivation is that some commands have no timeout and just end up using up CPU and memory for no reason while never exiting to free resources.
#!/bin/bash
IFS=$(echo -en "nb")
for pid in `ps aux|grep whois`; do
echo "pid=::$pid::&qu........
This is just if we have an output line. wc we know can count lines but the -w flag will count words:
echo "Ihave this line here" |wc -w
5........
A common method in bash is to assign output to a variable like this:
somevar=`uptime`
That works too but it could be more efficient to do something like this:
if [[ $(uptime|awk '{print $3}') > 20 ]]; then
echo "uptime greater than 20 days";
fi........
Now older versions of qemu-kvm didn't throw this error say if you just had "-video cirrus" when starting qemu-kvm. But newer versions do care.
And this probably only applies to you if you are running from bash/terminal with remote kvm images.
What you need to do is remove the "-video" part and just add -vnc :5
eg. this would fix the error:
qemu-system-x86_64 -enable-kvm -boot order=cd,once=dc -m 1024 -drive........
The way of doing it in mint is different than gnome and ubuntu.
gsettings set org.mate.background picture-filename /path/to/file.jpg
*If you try to use the gnome way it will NOT work with Linux Mint:
gsettings set org.gnome.desktop.background picture-uri /some/pic.jpg........
Install Errors on Version 12:
This error happened on QEMU emulator version 2.11.1 pve-qemu-kvm_2.11.1-5
on Proxmox/Debian but installing on QEMU.12 on Centos 6 did not produce the error.
*Update it is not related to the OS or QEMU version. This happened in Centos 6 too after a second install.
What really causes this even though you successfully install........
The strange thing is that usually the first install or two will work on any new machine but then it suddenly won't. I had this experience on QEMU 2.13 on a different machine. There is something finicky or buggy about the CUCM installer even when choosing the same virtual hardware specs.
qemu-kvm command:
/usr/libexec/qemu-kvm -version
QEMU PC emulator version 0.12.1 (qemu-kvm-0.12.1.2-2.506.el6_10.1), Copyright (c) 2003-2008 Fabrice Bellard
........
chroot which stands for change root allows you to virtually operate in another operating system even though you haven't booted it. It is commonly used to deploy new distros, applications and to fix a broken Linux/Unix install or prep a new system image without having to physically boot the drive or disk.
So in this example let's say we have a drive that has a Linux OS installed on /dev/sdb1 and we have mounted this partition on /mnt/sdb1
The key point is to edit the &quo........
Uh oh, so you're working on some super l33t code or other stuff that is super important and Linux Mint's MATE or Cinnamon window manager freezes. This means maybe you can move your mouse but you can't click anything, you can't Alt + Tab to another program but everything appears to be working other than that.
The first thing you would do is Ctrl + Alt + F1 (or whatever virtual terminal you want) and get into the Linux bash prompt (the black screen where things really happen :))........
Perhaps you've just seen this in the bash prompt:
-bash-4.1#
Instead of the expected user@hostname#
It is probably because you are missing .bash_profile or .bashrc in your home directory
Check for yourself:
ls -al ~/|grep -E ".bash_profile|.bashrc"
-rw-r--r--. 1 root root&nbs........
#!/bin/bash
sshcommand="ssh -N -R 20000:localhost:22 user@8.8.8.8"
result=`ps aux|grep $sshcommand"|grep -v grep`
if [ -z "$result" ]; then
echo "we are going to connect"
$sshcommand
else
echo "we are already connected"
fi
This is a handy script you can use and then add it to cron.
Save........
For some reason, perhaps you don't want to run a daemon or let Letsencrypt have access to your production server.
There is a way to use it like a normal CSR/CA setup in manual mode.
./letsencrypt-auto certonly --manual -d realtechtalk.com - www.realtechtalk.com
Eventually you will get prompted to create a certain path and file with certain data:
Create a file containing just this data:
Casdfasfadsfsad........
In this case if fullurl started with http://www. then it is a match
Note that you CANNOT put quotes around it or it becomes a literal match which will not work as intended in the bash script example below.
if [[ $fullurl == http://www.* ]]; then
echo "do something"
fi
Another example say we want to delete every file or dir in a path except sometihng that starts with "hellothere":
for file in `l........
for ip in `netstat -nt|awk '{ print $5 }'|cut -d ":" -f 1|tail -n +3|sort|uniq`; do
echo $ip;whois $ip|grep -i netname;echo "---------------------------"
done
77.88.47.40
netname: YANDEX-77-88-47
---------------------------
40.77.167.5
------........
Idid a systemctl restart networking and it broke Proxmox VM connectivity!
#proxmox is the problem after restarting the network the tap devices go to disabled state
[2230884.919905] vmbr0: port 7(tap118i0) entered disabled state
[2230884.948864] vmbr0: port 8(tap122i0) entered disabled state
[2230884.972748] vmbr0: port 6(tap119i0) entered disabled state
[2230885.004745] vmbr0: port 5(tap117i0) entered disabled state
[2230885.03673........
The key thing here is to know the actual partition that is encrypted.
Often in Linux Mint's installer that ends up being partition 5 or /dev/sda5
sudo cryptsetup luksOpen /dev/sda5 anynamehere
You will then be prompted for your irrecoverable passphrase:
Enter passphrase for /dev/sda5:
If all goes well it won't say anything further. If it says ""No key available with this passphr........
confmodules=`cat /etc/httpd/conf/httpd.conf |grep -v ^#|grep "modules/"|awk '{print $3}'|cut -d "/" -f 2`
for module in $confmodules; do
echo "module=$module"
if [ ! -f /etc/httpd/modules/$module ]; then
linenum=`awk /"$module/{ print NR; exit}" /etc/httpd/conf/httpd.conf`
sed -i "$linenum"s/.*// /etc/httpd/conf/httpd.conf
&n........
function centos7 {
release=`cat /etc/redhat-release|awk '{print $4}'|grep ^[7]`
if [ "$release" != "" ]; then
centos7='yes'
fi
}
centos7
echo "$centos7"
We create a function called "centos7" and then call it by just typing "centos7"
We then access a variable that may be set........
This takes "yourvariable" and splits it based on the last character in this case "-" and shows the last field of that split.
${yourvariable##*-}
........
# a single first slash means first occurrence
# format=${haystack/needle/replacement}
# if you use a double first slash it means ALL occurrences
# format=${haystack//needle/replacement}
email=${file/.txt-marked/}
In the example above we are searching in the variable $file for ".txt-marked" and replacing with nothing (the empty part after the last / means we are replacing with n........
#get line number of occurrence in text file and then print out x lines from that point
#get the line number of the first occurrence of our search text
linenumber=`grep -n "someuniqueitem" inventory.txt|head -n1|cut -d ":" -f 1`
#linestop represents how many lines after the occurring line we want to print out in this case "20"
linestop=$((linenumber+20))
# sed prints out the line range we want f........
In this case it just searches for port 80 it is fairly handy if you have some sort of appliance or something else you aren't sure of the IPof
Of course change the port 80 port to whatever port(s) you want.
for ip in `arp -n|arp -n|tail -n +2|head -n -1 |grep -v incomplete|awk '{print $1}'`; do
echo "checking $ip:80"
nc -w 1 -z $ip 80
if [ "$?" == 0 ]; then
echo "**Port 8........
A quick check in /dev/pts shows a lot of entries but what are they for?:
ls /dev/pts
0 10 12 14 16 18 2 21 23 25 27 29 30 32 4 6 8 ptmx
1 11 13 15 17 19 20 22 24 26 28 3 31 33 5 7 9
Basically they are pseudo-termi........
Usually this is because when you created your user you added a user but didn't create their home directory and/or for some reason your .bashrc and .bash_profile in ~ (home) is broken/missing.
In your home just create the following files with the following content to solve it:
.bashrc and .bash_profile.
To apply it just relogin/start a new bash session
# .bash_profile
# Get the aliases and funct........
zenity is a nice utility as part of the gnome window manager that allows you to script from bash and retrieve the input from the user. It could also be helpful in just notifying a user when they login with a popup window.
I'll give an overview of what's available with zenity:
Application Options:
--calendar Display calendar dialog
--entry Display tex........
sudo apt-get install libcurl4-openssl-dev git build-essential autotools-dev autoconf libcurl3
sudo apt-get install libcurl4-gnutls-dev
git clone https://github.com/wolf9466/cpuminer-multi
sudo apt-get install cmake libpthread-* libmicrohttpd-dev libssl-dev libhwloc-dev
git clone https://github.com/fireice-uk/xmr-stak-cpu.git
make install
cd bin
chmod +x xmr-stak-cpu
./xmr-stak -O xmr........
https://yarnpkg.com/lang/en/docs/install/#centos-stable
curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo
If you need node.js:
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - yum install nodejs yarn........
A simple way that may work for a lot of people who just need basic output for their scripts or daemons to announce an action is this:
echo "body or message" | mail -s "realtechtalk.com" user@domain.com
If you want to send a text file as the body just do this instead:
mail -s "realtechtalk.com" user@domain.com < /tmp/sometxtfile.txt
These are some ve........
This is not the normal "black screen"issue and I was shocked to eventually find out why. The normal advice of reconfiguring Xorg didn't work. Even booting into "Recovery Mode" did not help.
Here is the short end of the stick that fixed it:
sudo apt-get install mdm mate-desktop-environment
Yes you got it right, mdm and the mate-desktop-environment / gnome were somehow uninstalled. This must be whe........
It takes some tinkering the main thing is that the "-dmS" flag allows screen to start without a session which of course sudo won't have.
solution:
/usr/bin/sudo -u user /usr/bin/screen -dmS nameyouchoose /script/start.bash
this doesn't work at all:
/usr/bin/sudo -u user "/usr/bin/screen /script/s........
Centos 6 requires GLIBC 2.12 however a lot of new programs you would want to compile may need a newer glibc. You can't remove the old glibc since the whole OS is based on it but you can install the updated glibc alongside it and do an export pointing to your updated GLIBC.
mkdir ~/glibc_install; cd ~/glibc_install
wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz........
First find the line number:
awk '/what you are searching for/{ print NR; exit }' input-file
86
Now use sed to replace it:
sed -i 86s/.*/"your replacement text"/ $file
Here is a full sample script to automate it:
file=some/f........
pcimodules no longer works it produces nothing probably because the format of /sys/bus/pci is different.
lspci -k doesn't work on older lspci versions.
pciutils can be compiled but it won't work if you have an old system and compile on a newer glibc.
iteriate through /sys/bus/pci/devices/*/modalias
cat /sys/bus/pci/devices/*/modalias
pci:v00008086d00001237sv00000000sd00000000bc06sc00i00
pci:v00008086d00007000sv0000000........
Have you have a command ask a question such as cp or move?
You can do this:
echo y|cp * /tmp/othercopy
However it may still fail if your bashrc aliases have the "-i" flag see this post here.........
This through me for a loop when I would do a cp -rf or mv -f nothing would get overwritten even if piping y or yes to the command.
Type alias and you'll see why:
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
The -i is a safeguard against messing things up but however does mess things up worse when you know what........
To get the first X letters of a word:
It's very simple you can just pipe it to head with
-c 1 (gives the first letter and so on)
-c2 (2 gives the first 2 letters).
echo "dsjfsdlksjdklf;jlsd;kflasdj;kl"|head -c 2
Returns ds
To get the last X letters of a word:
Now we use tail with -c but it works differently. ........
A great way when moving your equipment to a new location, new router/switch etc to help confirm what MAC has what IP:
for ip in `arp -na|awk '{print $2}'|sed s/(//g|sed s/)//g`; do
echo ping $ip
ping -c 1 -w 1 $ip > /dev/null
if [ "$?" == 0 ]; then
echo "$ip UP"
fi
done........
I am using a GTX 1060 but replace the download for the driver with the correct/current version for your particular card by visiting: http://www.nvidia.com/Download/index.aspx?lang=en-us
yum install automake curl openssl-devel libcurl-devel gcc gcc-c++
yum -y install kernel-devel-`uname -r`
yum -y install unzip
#the........
This is mainly the case on Centos but applies to other distros and situations. If you are running programs in the background with the &, at least in Centos it is usually not honored and if you quit or are disconnected the backgrounded programs will be sent sighup and be shut down.
The simplest way around this instead of using & is to start any programs or commands with "nohup"
Eg.
nohup yourscript.sh........
Just type the following in the bash/terminal shell to enable the blue LED light on the Coolermaster CM Storm keyboard:
xset led 3
To make it automatic and permanent execute the following as root:
echo "xset led 3" >> /etc/rc.local
This is a fairly nice gaming keyboard whichI bought because I type very quickly and the cheap standard keyboards simply can't keep up!........
Based on this tutorial: http://www.linuxjournal.com/content/overlay-images-video-using-mplayer-and-mencoder
mencoder -oac pcm -ovc raw -vf bmovl=0:0:tfifo -o $output $file
vf_bmovl: Unknown command: ''. Ignoring. ........
espeak - is horrible and sounds very old and robotic
echo "hello there"|espeak
#don't know how to use
mbrola and plugins
cicero
jovie just seems to be a graphical interface to espeak
There is also sbreader/sapi
Google's Text To Speech Works Quite Well
#!/bin/bash
say() { local IFS=+;/usr/bin/mplayer -ao alsa -really-quiet -noconsolec........
This command will generate a random password using all letters and numbers that is 20 characters wrong based on /dev/urandom (for the most truly random output).
echo `< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-20};echo;`........
Very useful in embedded and other non-standard deployments. The above makes a random salt of 14 random characters from /dev/urandom (you can change the -14 to whatever number of characters you want for your salt).
openssl passwd -1 -salt `< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c${1:-14};echo;` YourPassword
Output:
$1$eW-ScuyL$f/iKMJ5mbJ..7bSzvX6EO0
How To Create Password Has........
There are usually two reasons for this.
#1 The most common is that you need to enable the -r (recursive) flag with zip to make it recurse into directories.
So the solution is to use -r
zip -r somefile.zip yourfiles
#2 If you are using bash scripting based on ls without the full path or for some other reason the full path is missing, zip looks for the files in the current directory so this will always fail.........
To check if a file/directory is a symlink in bash:
if [ -L /some/path/file ]; then
echo "OK we're a symlink"
fi
That's all there is to it and then you can see if the symlink target already exists.
Why it is important to know if a file or directory is a symlink:
Data Integrity: Deleting a symlink won't delete the target file or directory. Conversely, dele........
whois in Linux is incredibly out of date and does not seem to recognize most new TLDs domains, but there is a quick and easy tip/hack/tweak for this.
An example of new TLD's site as .review .site .club
whois somesite.club
No whois server is known for this kind of object.
bash to the rescue
Now I did try to apply this in .bashrc but DONOT! Ithink the * wil........
This is especially helpful if you run your own servers. If you are presented with an error message or warning that the signature has changed or does not match the IP/domain you are connecting to you always want to verify manually.
So your e-mail/web client will show you an SHA-1 fingerprint like this:
"Could not verify this certificate because the issuer is unkown" or other reasons such as a mismatch in IP/domain.
It will also show you........
The solution is simply "tidy"/Tidy-HTML. It will take your poorly formatted HTML code (and I mean files that span just a few lines that are unreadable) and fix it up.
Note the command below does everything in place. *Make sure you take a backup of all .html files*
It also seems to break html5 code/templates so beware.
tidy -im yourfile.html
An automated way in bash:........
What code is being returned or where is a URL/domain redirecting you to? Curl makes this easy and simple:
curl -Iyourdomain.com........
This seems to only happen from a bash script but it's not clear why it works from the terminal but not from a bash script.........
The "-S" switch is important as it works with sockets if you use "-f" it will not detect the socket file is there.
if [ ! -S "/var/lib/mysql/mysql.sock" ]; then
echo "Socket does not exist, restarting"
service mysqld restart
fi........
variable="abc hello"
How do you count it (note blank/white space counts as a character too)?
echo "${#variable}"
9........
cp -a /your/source/. /your/dest/
-a preserves all file atributes and symlinks
the "." at the end of /source/ includes all hidden files such as .htacess, .bash_history, .ssh etc..
The / in /dest/ makes sure the contents go into it instead of replacing /dest itself (eg. if you did not have the / at the end).........
apt-get install pptp-linux
echo "yourvpnusername * yourpasspass *" >> /etc/ppp/chap-secrets
vi /etc/ppp/peers/provpnaccounts.com
enter (ignore the lines):
============
pty "pptp server.provpnaccounts.com --nolaunchpppd"
name testuser
#remotename PPTP
require-mppe-128
file /etc/ppp/options.pptp
==========........
Debian/Ubuntu vi keyboard problem, up and down arrows do not work and instead make an A (Up), B (Down), C (Right) or D(Left).
The working solution
(you could also add the set nocompatible to /etc/vim/vimrc to make it system wide-will not be applied until reboot I believe):
echo "set nocompatible" > ~/.vimr........
A handy trick in bash that can be adapted to many useful tasks:
for i in {1..99}; do
echo $i
done
1
2..
97
98
99
100
Another tricky is if you need a 0 in front of the first letters:
for i in {1..12}; do
if [ $i -lt 10 ]; then
i=0"$i"
fi
echo $i........
Say you have a bunch of files like this:
file-01.jpg
file-02.jpg
...............
What if you want to mass rename them?
the rename tool can work just like sed
For Debian based distros:
Note "file" is what we search for and "newname" is what we replace it with, so substitute according to your requirements.
rename s/file/newname/ name-file-*.jpg
For R........
for disk in `fdisk -l|grep "Disk /dev"|awk '{print $2}'|sed s/://g`; do
echo "$disk" && smartctl -d ata -a "$disk" -T permissive|grep -iE 'Device Model:|Serial Number:'
echo "---------------"
done
*Make sure you have smartctl from smartmon tools installed
Sample output:
/dev/sdc
Device Model: ........
This is useful in the case you are not properly logged in via an OpenVZ session or even a normal SSH session that you fear may go down(if the connection is broken the history is not saved).
Save your bash_history like this:
history -w ~/.bash_history
You can always change the above to another file eg /tm........
Here is the scenario you or a client have a remote machine that was installed as a standard/default minimal Centos 6.x machine on a single disk with LVM for whatever reason. Often many people do not know how to install it to a RAID array so it is common to have this problem and why reinstall if you don't need to? In some cases on a remote system you can't easily reinstall without physical or KVM access.
So in this case you add a second physical or disk or already ha........
In my case I could login with the initial install but I rsync'd everything over while preserving ownership and permissions to another RAID partition and booted from that.was fine before. The problem is that you are kicked out the second you login and the problem was SELINUX for some reason (perhaps it noticed something strange when it was moved to the new partition)
login: pam_unix(login:session): session opened for user root by LOGIN(uid=0)
login: ROOT LOG........
So the situaton is this, you depend on things being relevant to where your bash script is and to be safe you want it to be dynamic (eg. do not hard code that we switch to /abc/dir but rather detect where script.sh is located).
scriptlocation="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
The path is then contained the the variable "scriptlocation" so you can cd to it in your script etc............
I never did get it working, it is too bad as obfsproxy should really be an option and integrated into the OpenVPN client and server or something similar:
yum -y install python-pip python-devel
No package python-pip available.
#install the EPEL repo
python-pip install obfsproxy
python-pip install obfsproxy
-bash: python-pip: command not found
pip install obfsproxy
&........
stat -c %s testfile.zip
10000000
The output is shown above in bytes.
........
if [[ $variable = *windows* ]]; then
echo "Our variable has windows"
fi
........
sed -i 's/[d128-d255]//g' file.txt........
so in this case we have files named like this:
track01.cdda.wav.mp3 track06.cdda.wav.mp3 track11.cdda.wav.mp3
track02.cdda.wav.mp3 track07.cdda.wav.mp3 track12.cdda.wav.mp3
track03.cdda.wav.mp3 track08.cdda.wav.mp3 track13.cdda.wav.mp3
track04.cdda.wav.mp3 track09.cdda.wav.mp3
track05.cdda.wav.mp3 track10.cdda.wav.mp3
but we want to rename them so they are like "05.........
#remove non english characters from file:
sed -i 's/[d128-d255]//g' file.txt........
This is a feature that works very well in bash and is easy to do:
*Remember you need the double brackets for this specific test even though a normal if would not require them
variable="hi there"
if [[ "$variable" = hi* ]]; then
echo "yes it contains hi"
fi........
It's very simple test to see if the directory exists or not. See the directory test in bash below:
if [ -d /home/mydir ]; then
echo "my directory exists"
fi........
It is very simple and like this to test for the existence of file using bash scripting:
if [ -f /etc/somefile ]; then
echo "yes it exists"
fi........
if [[ "$templatesource" == *windows* ]]; then
partition=/dev/sda2
fi
The * before and after * windows will match this "Ihavelotsofwindowshere"
Of we could have used "windows*" and anything that starts with "windows" will be matched etc...........
The command below will show only files created for the month of 2014-12 but you can of course change the year, month or even specific day or time to suit your needs. The awk command simply just makes it output the list of files created on the date you are looking for.
stat -c "%z %n" *|grep ^"2014-12"|awk '{print $4}'........
if you type Export and see something like this:
declare -x all_proxy="socks://127.0.0.1:22000/"
Most sites assume and tell you to check your .bashrc or /etc/profile /etc/bash.bashrc which may not apply if you've unknowingly or forgot that you setup a proxy from your GUI such as Gnome.
To check in Gnome if you have a permanent proxy do the following:
System -> Settings -> Network Proxy........
Use the program exiftags
exiftags 20141031_155127.jpg-45460829d582e9.jpg
exiftags: couldn't find Exif data........
I kept thinking it was esniper but somehow my bash settings have a preset proxy that was creating the issue.
https://signin.ebay.com/ws/eBayISAPI.dll?SignIn: Couldn't connect to server: couldn't connect to host
curl manually to any URL is the same:
curl: (7) couldn't connect to host
Run curl with -vvvvvv mode to see the issue:
curl -vvvvvvvvvv http://realtechtalk.com
* About to c........
variable=0
increment=$((variable + 1))........
It's a basic script that reads the file "ips.txt" in the current directory and then creates a corresponding ifcfg file
#!/bin/bash
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
device=eth0
counter=0
for ips in `cat ips.txt`; do........
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
tar xzvf bash-4.3.tar.gz
cd bash-4.3/
wget --no-directories --level 1 --recursive http://ftp.gnu.org/gnu/bash/bash-4.3-patches/
for patch in `ls bash43-*|grep -v .sig$`; do
echo applying "$patch"
patch -p0 < $patch
done
./configure;make;make install
#it will install to /usr/bin/bash but if your bash is somewhere else you need to overwrite the old one.........
Have you ever tried to run a command like rm to delete several hundred thousand files? Iam not sure what the limit is but any time it is exceeded you need to use a work around like below (which will delete any number of files).
Solution
find . -maxdepth 1 -name "*.*" -print0 | xargs -0 rm........
(echo n; echo p; echo 1; echo 1; echo; echo wq) | fdisk /dev/sdb
The above would make a new partition 1 on /dev/sdb and save the changes to disk, you can of course make changes to do almost anything in fdisk.........
#count=10000 makes an image of 10000MB make sure your image is at least the same as your existing
dd if=/dev/zero of=yourimage.img bs=1M count=10000
# losetup -fv newimage.raw
# fdisk -cu /dev/loop0
# kpartx -a /dev/loop0
# dd if= of=/dev/mapper/loop0p1
# e2fsck -f /dev/mapper/loop0p1
# resize2fs /dev/mapper/loop0p1
# a lot of guides tell you to edit /etc/fst........
I never found a solution to do it live (nothing worked that I found) so it looks like a relogin is required.
Check your maximum file limit
cat /proc/sys/fs/file-max
824460
This is different than your actual's user limit which you'll see below
ulimit -n
1024
Try and set it higher but it won't work
ulimit -n 65000........
[Wed Jan 08 18:50:07 2014] [emerg] (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock.15449) (5)
This may happen when trying to restart Apache and you find it dies right after starting and check /var/log/httpd/error_logs.
What is the cause of this?
You could be out of disk space (if you're not then see #2 and below)
You're out of Semaphores, you need to kill all the old ones.........
somestring="309sfjlks39889d"
removelast="${somestring%?}........
shuf -n 1 /path/to/your/file.txt
The above will give you a random line from the file using the "shuf" command.........
Example:
basename /var/log/messages
messages
As shown above the "basename" utility gives you the end filename separately.
dirname /var/log/messages
/var/log
As shown above the "dirname" utlity gives you just the utility even if you pass it a specific file.
The above two utilities are very helpful in Bash scripting when working with files and directories co........
cat Xorginfo.txt|grep -nr "xserver-xorg"
Result:
9: sudo apt-get remove --purge xserver-xorg
13: sudo apt-get install xserver-xorg
17: sudo dpkg-reconfigure xserver-xorg........
template=$(cat ........
Here is a handy script that will check all processes and report what is swapping
#!/bin/bash
for pid in `ps x|awk '{print $1}'`; do
result=`cat /proc/$pid/status|grep VmSwap|awk '{print $2}'|grep -v ^"0"`
if [ ! -z "$result" ]; then
programresult=`ps x|grep $pid|grep -v grep`
if [ $? == 0 ]; then
program=`echo $programresult|awk '{print $5}'|grep -v ^grep`........
date -d @timestampgoeshere +%c
It's very handy and simple as shown above.........
if [ ! -s /path/to/file ]; then
echo "file is blank or zero bytes"
fi
Use -s to check if it's larger than 0 bytes, Ilike to use the ! (not) operator to do this as shown above.........
LSi Megaraid
At first it was configured as a RAID 0, then I deleted the Virtual Disk Group.
I thought both drives would be shown and detected in Linux as sda and sdb but it actually shows nothing.
To make them work you have to hit Ctrl+R before the system boots (when prompted) and create a Virtual Disk Group. In my case I created each one as RAID 0 (with a single drive only) as I just wanted JBOD but there is no such option or default in these Dell Pe........
Say if you need to make a firewall script to block certain ports this works great.
for ports in 21 25 443; do
iptables rules here
done........
Bash weird variable whitespace missing
var=`cat tlds.csv|grep .ca,`
# echo "var=:$var:"
:ar=:.ca,Canada
Why is the v missing in the last line?
It should be
:var=:.ca,Canada
instead of
:ar=:.ca,Canada
I noticed a problem with the file with doing a "cat -v" on it.
Here's the issue, the file contains carat M ^M:
.vg,British Virgin Island........
zonetemplate=$(cat ........
for ip in `cat fixlist.txt`; do
sudo -u apache ssh root@$ip "`cat iptablesrules.sh`"
done
In the above example we are going to execute the commands within the local file "iptablesrules.sh" on all the machines in "fixlist.txt". This is a great way of performing server maintenance in a clustered or cloud environment.........
This happens all the time, you are reading from a textfile which has spaces eg:
datainfo 00
datainfo 11
If you do loop on it like this:
for info in `cat $file`; do
echo "info=$info"
done
It will treat datainfo and 00 as two separate lines:
info=datainfo
info=00
Obviously that's not what we want and there are many weird solutions in bash bu........
mysql -u username --password='yourpassword' ........
-bash-3.1# shutdown -rn now
Connection to localhost closed by remote host.
Connection to localhost closed.
Sometimes I work with embedded systems/custom kernels without any of the fancy init scripts and other common Linux basics that most would expect. This means that often the "reboot" command (which uses an init script) will never work, not only that but it will hang the server and a manual power cycle or reboo........
num=$(($onenum + $anothernum))
It's a bit silly that bash can't add normally as you'd expect (eg. $num + $num).........
$[ ( $RANDOM % 5000 ) + 20 ]
echo "$[ (........
start=1
increment=5
lines=`cat linesfile.txt|sed -n "$start","$increment"p`
The secret here is the power of sed.
Basically the example above would take the first 5 lines from the file. You could change it though to say take 20 lines starting from the 5th line by adjusting the start and increment values.........
for entity in {1..20}; do
echo "entity=entity"
done
The above will loop 20 times, you could also do {2..50} etc...
for entity in {0..10..5}; do
echo "entity=entity"
done
The above will loop 10 times but will start from 0 and increment by 5 each time.........
cat | grub --device-map=/dev/null
Now pay close to the attention of the beginning.
Type: "device (hd0) VPS.img" this is telling what hd0 will be to GRUB and we're telling it the disk image file "VPS.img" in the current directory is hd0, you can specify alternate paths and image names of course.
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-li........
The best way is to use rsync, I've set it up so it doesn't copy unnecessary files, or at least ones I'm sure aren't needed.
Here is the rsync command Iused (adapt to your specific Thunderbird profile location):
rsync -hazv user@remotehost.com:/home/user/.thunderbird/sbrer.default/* /home/user/.thunderbird/4nyb0.default/ --exclude=global* --exclude=Cache --exclude=ImapMail --exclude=Mail
This is a great way to get your e-mail accounts going on a new c........
Here is a quick script that works on most Centos versions to disable the virus/SELinux from blocking basic functionality.
The first echo 0 statement disables SELinux instantly but it will still be enabled on reboot.
The second line disables it permanently.
#!/bin/bash
#disable SELinux Immediately
echo 0 > /selinux/enforce
#disable SELinux Permanently
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config........
In bash you test like this for problems that can be caused by non-printable characters since if you don't know how to identify it because it basically breaks your script.
echo "url=$url" should print something like this normally if you have properly formatted input/text:
url=::http://someaddress.com::
But if you have some weird hidden characters (not visible in a text editor of any sort you'll get something like this
::l=::http://s........
I experienced this with CPanel's Exim after an auto-update (a Google of this error produces lots of complaints with few clear solutions). In this case I'll put the solution at the top.
Run /scripts/buildeximconf to rebuild the Exim config and it should be fine after that.
mail -vs "from test" user@dest.com < .bash_history
LOG: MAIN
cwd=/root 4 args: send-mail -i -v user@dest.com
LOG: MAIN
&........
It may be hard to find by Googling by it's really quite simple and quicker than reading dozens of man page entries.
sed -n 5p somefile.txt
Just replace the 5 with whatever line you want to be printed.........
I had a system running a 128MB live CD image with 2.8 gigs of available RAM and the OOM kernel killer went crazy when using dd for more than 8 minutes and kept killing everything. I've read that this is due to a low-memory issue and paging in the kernel and 32-bit systems with lots of RAM.
I even enabled swapspace on my LiveCD and the issue happened 25 minutes into dd rather than 8 minutes, so what gives?
Also no swap space was ever used!
cat /proc/s........
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd
grub> setup........
http://www.datsi.fi.upm.es/~frosal/
SHC is a program written by the author above that does just that, it's a great little tool to have.
Some have said it isn't exactly encrypting the code but just making it hard to read by obfuscating the code.
There was also a good discussion about that here:........
ls
ls: error while loading shared libraries: libtermcap.so.2: cannot open shared object file: No such file or directory
This is not an ldd problem or case of anything missing, this only happened after I upradedUbuntu.
declare -x PATH="/home/user/bin:/usr/local/bin:/usr/bin:/bin:/usr/games"
"/home/user/bin" is the problem! It's weird because I have no idea how it happened.........
Convert MBOX Mail files into Maildir using Linux
*You need perl an the TimeDate module
Get the free Perl script mb2md from the project/author's site:
wget http://batleth.sapienti-sat.org/projects/mb2md/mb2md-3.20.pl.gz
gunzip mb2md-3.20.pl.gz
#remember you need timedate or you'll get this error:
./mb2md-3.20.pl
Can't locate........
This doesn't seem to be widely known (maybe it's in some documentation that none of us read though)but there's an easy way to check the integrity of any mdadm array:
sudo echo check > /sys/block/md0/md/sync_action
-bash: /sys/block/md0/md/sync_action: Permission denied
sudo will never work, this only works as root since echo is not actually a binary/command. It is built-into bash.
/sys/devices/virtu........
For many reasons you may be dealing with a standard text file and you want to know if there are any duplicate lines:
Here's how you do it:
cat filename|uniq -c
The "uniq -c" program counts how many time each line occurs.........
yum exits in the middle
The problem is this VPS seems to be an OpenVZ template from HyperVM. The only way to make it work was to disable i386 packages since this was an x64 kernel. That shouldn't be necessary but it was the only way to make yum stop quitting after the first package or two. I couldn't find any issue by checking the logs either.
echo y|yum install vim-minimal telnet expect jwhois net-tools slocate iptables elinks gawk
L........
I separated the 2 drives in the RAID 1 array.
1 is the old one /dev/sda and is out of date, while the separated other one /dev/sdc was in another drive and mounted and used with more data (updated).
I wonder how mdadm will handle this:
usb-storage: device scan complete
md: md127 stopped.
md: bind
md: md127: raid array is not clean -- starting background reconstruction
raid1: raid set md127 active with 1 out of 2 m........
From a LiveCD or if you're doing something like converting your non-RAID install to mdadm here's how you would chroot properly (you have to mount your proc, sys and dev on the running system/LiveCD to your chroot environment if you want things to work right, especially if you need to run update-initramfs due to a driver change etc..)
*replace "path" with your mount/chroot path
mount -o bind /proc /mnt/path/proc
mount -o bind /dev/ mnt/pa........
I keep getting this in my SSH/Bash console:
NotifyByPopup::slotDBusNotificationClosed: 465 -> 0
 ........
This was done on Centos butI think it's easier on Debian machines, the paths that it is set to use are tailored towards Debian, so there is some fiddling that needs to be done on Centos.
This is for chrooting ssh, but jailkit has other uses than just SSH jails but I won't cover them in this writeup.
1. Install jailkit
yum install jailkit
2. Setup Jail Home
mkdir /home/jail
chown root:root /home/ja........
This is a very simple solution, but most guides out there make you login twice (once to scp the key) and once to put the key in authorized_keys. There's no need for that.
If you don't already have a ~/.ssh/id_rsa.pub just type "ssh-keygen -t rsa" and keep hitting enter until it's done :)
Just use this code to easily enable passwordless login with SSHD
key=`cat ~/.ssh/id_rsa.pub`;ssh user@192.168.5.25 "echo $key >> ~/.ssh/auth........
mdadm --assemble --scan
mdadm: /dev/md/diaghost05102010:2 has been started with 2 drives.
mdadm: /dev/md/diaghost05102010:1 has been started with 2 drives.
mdadm: /dev/md/diaghost05102010:0 has been started with 2 drives.
-bash-3.1# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid6] [raid5] [raid4] [multipath]
md125 : active raid1 sda1[0] sdb1[1]
14658185 blocks super 1.2........
Seagate Inventory/Firmware Check
I heard about this issue a long time ago but never looked into it. I figured I wasn't affected since my 500GB drives were running for so long. I've been using Seagate's since 2002 and to this day all of the drives I have are alive from Seagate.
*Update the bad news is that I realize one of my 500GB's is about to die, it's not even a year old, but is also not affected by the recall according to Seagate!
Seagate Inventory/Firm........
Before we start I take no responsibility for this, you should have a backup and if you make a mistake during this process you could wipe out all of your data. So backup somewhere else before starting this as a precaution, or make sure it's data you could afford to lose.
The RAID 1 Setup (Hardware Wise)
I've already setup my 2 x 1TB (Seagate) drives with identical partitions, make sure your new hard drive (the empty one) is setup like your curr........
It's basically free bash shell script available from: http://wpkg.org/email2fax/index.php/Main_Page
Make sure you have the required tools:
libtiff
ghostscript
mpack/munpack
Where you can e-mail your Asterisk box and it will fax it to the phone number in the subject line. The good news ends there, it is fairly undocumented and buggy.
Take for example how the documentation mentions you can invoke from the com........
PHP cannot access /usr/bin/opensslI have verified the username that runs the process is able to access /usr/bin/openssl and it does exist but the PHP script is saying it doesn't exist:
[code:1:1fd0f3abbe]
if (!file_exists($OPENSSL)) {
//echo "ERROR: OPENSSL $OPENSSL not foundn";
}[/code:1:1fd0f3abbe]
I don't get itI can clearly see the contents of /usr/bin by using the PHP system fu........
rsync bash script
[code:1:722d8a25c1]#!/bin/bash
# config ---------------------------------
# two methods
# from = receive data from another server
# to = send data to another server
rsync_method=from
rsync_ip='192.168.5.18'
local_dir='/home/backupguy/backups'
remote_dir='/home/backup'
free_space_bin='/home/backups/freediskspace.sh'
# config end ------------------------------
if [ '$rsync_me........
Change default shellJust echo this at your command line (in this case I chose bash since I prefer the bash shell) this way it will be the default when you login again
[code:1:71e2834907]chsh -s bash[/code:1:71e2834907]........
Bash Script Infohttp://www.faqs.org/docs/Linux-HOWTO/Bash-Prog-Intro-HOWTO.html#ss10.5
http://www.scit.wlv.ac.uk/~jphb/spos/notes/shell/shell5.html
http://quong.best.vwh.net/shellin20/#LtohTOCentry-41
http://www.cactus.org/~dak/shellscript.html
http://db.ilug-bom.org.in/Documentation/abs-guide/
http://pegasus.rutgers.edu/~elflord/unix/bash-tute.html
http://heather.cs.ucdavis.edu/~matloff/UnixAndC/Unix/CShellII.html
Since bash i........
This is a very weird, annoying and bizarre quirk with many distributions, especially Debian. The home and end keys don't work, but it's a simple fix as long as you found this article :)
You just have to edit /etc/inputrc:
Find the commented lines as shown below:
# "e[1~": beginning-of-line
# "e[4~": end-of-line
*If you can't find the above, just copy and paste the code below into your inputrc, it will en........
You can see the problem below, GRUB recognizes my hard drive and sees the partitions but cannot access them. This is from the GRUB boot disc I'm using.
What happened is that I had some power issues causing this system's power to be interrupted several times and basically an on/off on/off situation.
The system won't boot, I just get a flashing cursor and no message or error from GRUB. Obviously the problem is that my MBR seems corrupt or some other issue.
My........
Iwas getting really annoyed with this, I used full quotes around the filename and vi, cat, less all thought I was trying to pass the dash in the filename as an argument.
I didn't realize that all you have to do is just put a dash dash "--"in front.
Here's an example:cat -- "-etc-glusterfs-glusterfsd.vol.log"
Without the -- you get: cat: invalid option -- c
Try `cat --help' for more information.
Ih........
There is a tool called "xml2" which will parse both HTML and XML scripts, this is very useful to do a mass extraction or conversion of data based on say an HTML table etc..
It becomes even more powerful using bash if certain tags are identified with a certain class="" attribute or something else unique to only the tags you want.
Happy parsing.........
((: 08: value too great for base (error token is "08")
Here is the code that caused it for ((track=1;track ........
track-=1
produces
track: command not found
It's weird because track+=1 works just fine
The solution is to used the old fashion method:
track=$(($track - 1))........
I've been struggling with this for awhile, wondering why all of my variables are null. Ijust realized the variables disappear after leaving this while loop.
Note that I'm piping to the while loop which makes a subshell Ibelieve which is the cause of the issue:
echo "$accounts"|while read thisline; do
somevariable="some value"
(( ++counter ))
done
At all costs you ne........