Hello all. I made a version of scanvirus years ago to replace GUI shells with something much simpler. Version 2.00 has lots of new features. It's been heavily beta tested.
You have scan linux only and scan ms windows files only. This will scan all windows drives connected, mounting and unmounting as needed. The output is designed to be easy to read. It shows current files scanning and keeps virus lines only. For windows, you can do scan only or scan --> move to virus vault.
scanvirus (clamscan engine) found viruses mswin scanners missed, at least 10 viruses so far. Enjoy people.... 
In your 'home/bin/' directory, create 'scanvirus' text file. Then copy and paste this code into it. Save the file. Edit properties to execute script. Then enter terminal superuser mode (su). Enter 'scanvirus' for commands.
Code:
#!/bin/bash
#: Title : scanvirus
#: Date Created: Thu Sep 2 19:27:00 PST 2010
#: Last Edit : Tue Feb 23 2:30:00 PST 2016
#: Author : Lord Valarian #: Version : 2.0.0 beta2
#: Description : virus scanning application, clamscan engine
#<a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-nd/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/">Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License</a>.
#Software License: http://creativecommons.org/licenses/by-nc-nd/4.0/
#modified for personal use only, no modified uploads permitted, non-commercial use only
#Open bin folder
#Place this file inside "/home/bin/"
#
#Right-click on scanvirus
#Click on properties
#Click on permissions
#Check executable and click ok
#install clamav or run setup
#Click Control -> Tools -> Open Terminal
#Enter termal command: scanvirus --setup
#Enter admin password, wait for it to finish. Don't close terminal.
#kdeicon disabled
#Enter terminal command: scanvirus --kdeicons
#close terminal windows
#
#Click on either desktop icon to scan
#Warning! only use control-c to exit
Create_KDE_linux_scan_icon() {
cat > ScanVirus_KDE_Linux_Scan.desktop <<EOF
#!/usr/bin/env xdg-open
[Desktop Entry]
Comment[en_US]=
Comment=
Exec=sh scanvirus -linux
GenericName[en_US]=
GenericName=
Icon=kde
MimeType=
Name[en_US]=ScanVirus - linux anti-virus scan
Name=ScanVirus - linux anti-virus scan
Path=$PATH
StartupNotify=true
Terminal=true
TerminalOptions=\s--noclose
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=
X-SuSE-translate=trueEOF
EOF
#set file permissions
chmod 744 ScanVirus_KDE_Linux_Scan.desktop
}
Create_KDE_windows_scan_icon() {
cat > ScanVirus_KDE_Windows_Scan.desktop <<EOF
#!/usr/bin/env xdg-open
[Desktop Entry]
Comment[en_US]=
Comment=
Exec=sh scanvirus -mswin
GenericName[en_US]=
GenericName=
Icon=kde
MimeType=
Name[en_US]=ScanVirus - windows anti-virus scan
Name=ScanVirus - windows anti-virus scan
Path=$PATH
StartupNotify=true
Terminal=true
TerminalOptions=\s--noclose
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=
X-SuSE-translate=true
EOF
#set file permissions
chmod 744 ScanVirus_KDE_Windows_Scan.desktop
}
Virus_Vault_Directory_Check()
{
#create tmp directory if not present
if [ -d "/tmp" ]; then
printf "root/tmp/ directory present\n"
else
printf "creating tmp directory\n"
mkdir tmp
#chmod 744
fi
#create virus Vault if not present
if [ -d "/tmp/VirusVault" ]; then
printf "root/tmp/virusvault/ present\n"
else
printf "creating virus vault\n"
mkdir /tmp/VirusVault
chmod 744 /tmp/VirusVault
fi
}
Scan_Results_Filter()
{
Line=''
IFS=''
delete_line_flag=true
scan_results_flag=false
while read -r -N 1 c; do
if [ "$delete_line_flag" = 'true' ]; then
Line=''
echo -en "\E[2K\r"
delete_line_flag=false
fi
#if not newline character
if [[ "$c" != $'\n' ]] ; then
printf "%s" $c
Line+=${c}
#printf "(%s)\n" $Line
if [ "$c" = ':' ];then
Line=''
fi
#if new line
else
if [ "$Line" = '----------- SCAN SUMMARY -----------' ]; then
scan_results_flag=true
fi
if [ "$scan_results_flag" = 'true' ]; then
printf "\n"
Line=''
elif [[ "$Line" == *"FOUND"* ]] || [[ "$Line" == *"moved to"* ]];then
printf "\n"
Line=''
else
delete_line_flag=true
fi
fi
done
unset IFS
}
#read -p "Done. Press any key..." -n1 -s;printf "";
#####################
# shortcut code for clamscan #
#####################
control_c()
# run if user hits control-c
{
printf 'Exiting...\n'
scanvirus_trap_flag='true'
#kill clamscan
}
#export TERM=vt100
#trap keyboard interrupt (control-c)
scanvirus_trap_flag='false'
trap control_c 2
#commands
if [ "$1" = "-mswin" ] || [ "$1" = "-w" ]; then
Virus_Vault_Directory_Check;
freshclam
printf "\n.....scanvirus mswin.....\n"
#blkid -o list
scanvirus_flag="false"
while read -ra line; do
if [ "$scanvirus_flag" = 'false' ]; then
scanvirus_flag="true"
read -ra line
read -ra line
#break
fi
Device_Label=${line[0]}
File_System=${line[1]}
Drive_Label=${line[2]}
Mount_Point=${line[3]}
#if file system vfat or ntfs
if [ $File_System = 'ntfs' ] || [ $File_System = 'vfat' ]; then
#printf "%s %s %s %s\n" ${line[0]} ${line[1]} ${line[2]} ${line[3]}
printf "__________________________________________________\n"
#if device not mounted
if [ $Mount_Point = '(not' ]; then
#udisksctl mount -b $devicename -o ro
Device_Mounted_Flag=true
while read -ra command_output; do
printf "%s %s %s %s\n" ${command_output[0]} ${command_output[1]} ${command_output[2]} ${command_output[3]%.}
break
done < <(udisksctl mount -b "$Device_Label")
command_output_mount=${command_output[0]}
if [ "$command_output_mount" = 'Mounted' ]; then
printf "%s mounted\n" $Drive_Label
else
printf "Error: mount %s\n" $Drive_Label
fi
command_output_scandir=${command_output[3]%.}
#elif [ "${line[3]}" = '(in' ]; then
# printf "(in use)\n"
else
Device_Mounted_Flag=false
command_output_scandir=$Mount_Point
fi
#scan only or move files
if [ "$2" = "-m" ] || [ "$2" = "-movetovault" ]; then
printf "Move to Virus Vault: /tmp/VirusVault/\n"
Movefile_Parm="--move=/tmp/VirusVault"
else
Movefile_Parm=''
printf "Scan only\n"
#printf "\n"
fi
printf "\nscanning: %s %s\n\n" $Drive_Label $command_output_scandir
clamscan -r $command_output_scandir $Movefile_Parm --follow-dir-symlinks=0 --follow-file-symlinks=0 | Scan_Results_Filter
#if drive mounted, unmount it
if [ "$Device_Mounted_Flag" = 'true' ];then
while read -ra command_output; do
break
done < <(udisksctl unmount -b "$Device_Label")
command_output_unmount=${command_output[0]}
if [ "$command_output_unmount" = 'Unmounted' ]; then
printf "%s unmounted\n" $Drive_Label
else
printf "Error: unmount %s\n" $Drive_Label
fi
fi
printf "__________________________________________________\n"
fi
#break
if [ "$scanvirus_trap_flag" = 'true' ]; then
break
fi
done < <(blkid -o list)
#virus vault files read only
chmod 744 /tmp/VirusVault
elif [ "$1" = "-linux" ] || [ "$1" = "-l" ]; then
printf ".....Scanning linux.....\n";
freshclam
printf "\n"
clamscan -r / --exclude-dir=/sys --exclude-dir=/proc --exclude-dir=/dev --exclude-dir=/.snapshots --follow-dir-symlinks=0 --follow-file-symlinks=0 | Scan_Results_Filter
elif [ "$1" = "-help" ] || [ "$1" = "-h" ]; then
printf "
Scan Virus
help commands
-------------
virus scan linux files
p1: -l or -linux
virus scan windows files
p1: -w or -mswin
p2: -m or -movetovault (optional)
--setup: setup scanvirus
--kdeicons: setup icons
\n"
elif [ "$1" = "--setup" ]; then
printf "\n"
printf "ScanVirus Setup...\n"
su -c "zypper --non-interactive install clamav;chkconfig freshclam on;freshclam;exit"
printf "\n"
elif [ "$1" = "--kdeicons" ]; then
#Create_KDE_linux_scan_icon;
#Create_KDE_windows_scan_icon;
#printf "KDE Icons Created\n";
printf "Disabled\n";
else
printf "
Scan Virus
help commands
-------------
virus scan linux files
p1: -l or -linux
virus scan windows files
p1: -w or -mswin
p2: -m or -movetovault (optional)
--setup: setup scanvirus
--kdeicons: setup icons
\n"
fi
exit 0
# End Of Script
Bookmarks