Speak now
Please Wait Image Converting Into Text...
Embark on a journey of knowledge! Take the quiz and earn valuable credits.
Challenge yourself and boost your learning! Start the quiz now to earn credits.
Unlock your potential! Begin the quiz, answer questions, and accumulate credits along the way.
General Tech Bugs & Fixes 2 years ago
Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.
Turn Your Knowledge into Earnings.
Working on a script to fit a specific format. I need the results of the command to be echoed between pipes | X |.
| X |
When I try to use du -ksh it always brings a carriage return.
du -ksh
Any idea how to deal with it?
#!/bin/bash echo -e "|_. Sites-enabled |_. ServerName |_. ServerAlias |_. UserID |_. DocumentRoot |_. Dig ServerName |_. Dig ServerAlias |" ls /etc/apache2/sites-enabled/* | while read fichier do # SiteName & ServerName & ServerAlias & UserID sitename=($(echo $fichier | cut -d"/" -f5)) serverName=`awk -F"ServerName" '/ServerName/{printf "%s ",$2}' $fichier` serverAlias=`awk -F"ServerAlias" '/ServerAlias/{printf "%s ",$2}' $fichier` userID=`awk '/AssignUserID/ {printf "%s ",$2}' $fichier` echo -e "| "$sitename" | "$serverName" | "$serverAlias" | "$userID" | " # Size DocumentRoot home=($(awk -F"DocumentRoot" '/DocumentRoot/{print $2}' $fichier)) for i in "${home[@]}" do du -ksh $i && echo -e "|\n" done
Edit for @muru :
hey thanks for your answer. I'm really new in shell-scripting just learning it since a couple days.
I need to export values of my virtualhosts in apache2 sites-enabled like ServerName ServerAlias DocumentRoot and so on. From there I run a du ksh on the extracted Document Root to see the size of eacj website hosted. Afterwards the script will run a dig on the extracted Servername & aliases to check where it really points out.
The final format would be ideally set in a "board" to be exploited online on a website that uses a special format for it (each first title rows start with pipe+underscore+dot |_. the last rows end with pipe only then each line after the fist one start and end with a pipe).
However when running the script I can't make the desired format work, if I put the echo -e "| \n" outside of the for ; it seems it stops at the first DocumentRoot found in a virtualhost. If i have a website with multi vhost inside it fails to take them all into account.
I suspected something related to the carriage returns cause the output is really weird for me.
EDIT 2019-04-11
switched from echoto printf. feels better.
echo
printf
#!/bin/bash #============================================================================================ # # FILE: getvhost.sh # # USAGE: getvhost.sh # # DESCRIPTION: Find all virtualhosts enabled in apache2; extract their servernames & aliases, # get the total size of the websites enabled from documentroot section, extract their userid, # performs DNS lookups from servernames & aliases # Display and format the answers to be use and copy-paste in https://plan.io : # |_. TITLE1 |_. TITLE2 |_. TITLE3 |_. ... | # | site1 | servername1 | serveralias1 | ... | # | site2 | servername2 | serveralias2 | ... | # # OPTIONS: --- # REQUIREMENTS: apache2 with sites-enabled in /etc/apache2/sites-enabled # BUGS: --- # NOTES: --- # AUTHORS: --- # COMPANY: --- # VERSION: 1.1 # CREATED: 2019.04.07 # REVISION: 2019.04.11 #============================================================================================ echo -e "|_. Sites-enabled |_. ServerName |_. ServerAlias |_. UserID |_. DocumentRoot |_. Dig ServerName |_. Dig ServerAlias |" ls /etc/apache2/sites-enabled/* | while read file do #-------------------------------------------------- # Get sitename & serverName & serverAlias & userID #-------------------------------------------------- sitename=($(echo $file | cut -d"/" -f5)) serverName=`awk -F"ServerName" '/ServerName/{printf "%s ",$2}' $file` serverAlias=`awk -F"ServerAlias" '/ServerAlias/{printf "%s ",$2}' $file` userID=`awk '/AssignUserID/ {printf "%s ",$2}' $file` echo -e " | " $sitename " | " $serverName " | " $serverAlias " | " $userID " | \c" #------------------------------------------------- # Get Size of websites from DocumentRoot #------------------------------------------------- home=($(awk -F"DocumentRoot" '/DocumentRoot/{print $2}' $file)) for i in "${home[@]}" do size=`du -sh $i` printf "%s " $size done echo -e "|" #----------------------------------------------- # DIG on both ServerName & ServerAlias #----------------------------------------------- dig=($(awk -F"ServerName" '/ServerName/{print $2}' $file)) for i in "${dig[@]}" do dig1=`dig +noall +answer +short $i` printf "%s " $dig1 done echo -e "|" dig=($(awk -F"ServerAlias" '/ServerAlias/{print $2}' $file)) for i in "${dig[@]}" do dig2=`dig +noall +answer +short $i` printf "%s " $dig2 done echo -e "|" done
Couldn't get the desired output with echo "$(du -ksh $i)". Switched the echowith printfand got the desired output. Can't really explain it but still, works.
echo "$(du -ksh $i)"
No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.
General Tech 10 Answers
General Tech 7 Answers
General Tech 3 Answers
General Tech 9 Answers
General Tech 2 Answers
Ready to take your education and career to the next level? Register today and join our growing community of learners and professionals.