"Linux Gazette...making Linux just a little more fun!"

Removing "Strange" files (response)

Last month there was a shell script offered by
Mendel Cooper <thegrendel@theriver.com> for removing files
with degenerate names. That is to safely unlink those filenames
containing "special" or strange characters.

It appears to be a dangerous script, and is probably not the
best was to accomplish his stated goals.

There is no reason to blindly and indiscriminately remove all files
containing whitespace, and the character set
[+{;"\=?~()<>&*|$].
There is good reason to warn the sysadmin about the existence of
such filename/links in the "common" areas of the file hierarchy.

In fact this particular set of characters seem arbitrary. For
example why include the "open curly brace" and not its closing
counterpart? Experience has shown that one is much better off
using converse logic in these cases. In other words, one should
define a set of the characters which are definitely to be allowed
in filenames rather than trying to think of all the characters
that "might be bad."

To safely find all files with such strange characters one can
use a command like:

find / -name '*[^][a-zA-Z0-9#%~:,._+-]*'

... this defines a list of characters which I allow in my
filenames: alphanumerics (a-zA-Z0-9), the square brackets
([]) --- note that /usr/bin/[ is a standard link to the
/usr/bin/test command --- a few bits of punctuation that are
occasionally found in filenames (such as the "dot" and "tilde"
characters).

Note that even this liberal list of allowed characters isn't
liberal enough on my Debian and S.u.S.E. systems. I find
some "accented" (High ASCII) character filename links among
some of the fonts and console/kbd map packages. I find that
many MP3 files contain spaces, ampersands, and apostrophes.

In order to see characters that might not be displayed correctly
by your terminal you can use the "-v" option to the cat command
like so:

find / -name '*[^])}{([a-zA-Z0-9@#$&"'"'"'%~:,._+-]*' | cat -v

... here I've even further liberalized my character set even
to allow single and double quotes to be allowed. The part of
this that might be confusing bears explanation:

[^])}{([a-zA-Z0-9@#$&"'"'"'%~:,._+-]
^^^^^^

Here I'm adding the double quote (which is quoted from the
shell by the single quote way back at the beginning of this
argument), then I'm ending the current single quoted context
and immediately starting a double quoted one context. This is
still part of the same shell argument (since I haven't introduced
any unquoted whitespace, or anything that is in a normal IFS).
Then I have a single quote (which is quoted by the double quotes)
and a terminating double quoted (ending that string), and another
opening single quote which goes to the end of the argument.

It's ugly, but it is the easiest way to put a literal single
quote into a shell argument. (There are a number of characters
that are "special" or that have "metasyntactic" implications
when they are in a double quoted context, but only the single
quote is significant inside of a single quoted context.

Note also that I use the dash character as the last one inside my
character class. That to indicate to the regex/globbing engine
that this particular dash represents itself (a literal dash) and
that it is NOT operating to indicate a range of other characters,
as it is when it appears in the a-z, A-Z, and 0-9 sequences.
Similarly I have the closing bracket as the first "normal"
character after the opening of the class and the "negation"
operator. The regex/globbing engine that's used by find, bash and
the GNU utilities is well written enough to distinguish between the
literal inclusion of these "special" characters and their other
uses within the regex/glob character class defining syntax. To
allow the use of the "^" (circumflex or "caret" ) character we can
include an additional instance of it later in the class definition
(anywhere other than the first or last character of the sequence).

This regex "class definition" sequence is quite an advanced topic,
so it is easiest to use it as an example so long as you understand
what it does. In other words you can safely use this example even
if you don't understand how to create such a pattern --- just be
sure that you know what it DOES.

To safely remove a file with special characters in its name
one can use a syntax like:

find . -maxdepth 1 -name .... -print0 | xargs -0 rm

... note that those are "zeros" in the -print0 'find' directive
and the -0 option to 'xargs' These "zero" arguments work together
to ensure that the filenames are passed from the 'find' process to
the rm command as NUL terminated strings. The ASCII NUL character
(the 0-th in that encoding system) is really special and it really
can't be embedded in a filename.

There are some other GNU utilities that accept a -0 or --null
option to allow 'find' to pass NUL-terminated arguments to them
including GNU tar and cpio.

The ellipses in this example can be replaced with any globbing
pattern that exclusively matches the file(s) to be removed. Use
the find command into a 'cat -v' process first to be sure that it
only lists those file that you really intend to remove. Of course
the . argument could be replaced with any directory name or list of
names.

Incidentally, the reason I came across this is because I'm starting
work on a "Linux Tips fortune cookie" file.

Mendel Cooper responds:

That is correct, in the sense that all administrative tools, utilities,
and scripts are dangerous, especially those affecting the filesystem. Any
script coming from an outside source that is used blindly and without
understanding is dangerous.

2C Tip

I've read the 2C Tip from Pat Bateman <pat99@linustart.com> and I found
it useful. I wrote a small Perl script that inspects all open ports and reports
about them. I want to share it with the others - and also ask you to check if
it works or if it is not useful!!!

Quick html browse / edit

If you want to edit your HTML code you have some choices, most of them
only allow you to change your bare code in a non Visual method. This can be
viewed as drawback but after the design of the 1st file of a given set must of
the work is Cut & Paste, so you can use the Netscape editor to create the
template them clear all the junk code that it write and then use one of the
following options:

- Just an editor and and your favorite browser
Lynx, Netscape, konkeror ..... and another windows with vi, pico, joe, emacs or
somethings more "WYGIWYSish"
Use: Just from X, lauch all that you want and don't forget to reload your pages
after saving them
- mc
midnight command can let you see html files (rendered by lynx) and edit them
with cooledit (Warning this a a console tool !! If you use one of them too
much you could end as a Computer Guru years later ! )
Use: Just open a console and tipe mc (Most distros) browse with the arrows,
read files with F3/enter and edit them with F4
- emacs : This "editor" have some features that help you to browse and edit your
html files. Is there anything that can't be programed in it? ;-)
Use: Just read all the emacs docs, and launch it (either in X or console)
- Amaya lets you update your changes automagically and give you a treelike
view of your code's structure. (nice feature if you use a lots of tables) Made
by the w3 consortium, see http://www.w3.org
Use: Launched from X
- One of the KDE tools :
KDreamSite see http://www.raverx.seite.ms
WebMaker see http://www.services.ru/linux/webmaker
KWebDeb see http://mason.gmu.edu/~ebanker/kwebdev/index.html
Use: Launched from X
Galway (good !, GNOME html editor) see http://erin.netpedia.net/
Use: Launched from X
There are also others
CoffeCup (good but not Open Source) ,
tkHTML
asWedit
plexel
ASHE
Bluefish (Nice!) see http://bluefish.linuxbox.com/
Bulldozer (designed by the NASA!)
ewin

You can allways go to http://www.freshmeat.net or even www.linuxberg.org and
search there for more stuff, I'm sure that this list is not complete.

I strongly sugest you to use some short of scripting or templates to create
your pages. The target is to tipe your have your new text as plain text and get
nicely formated html pages just a "click/script" away. (Perl anyone?)

Un saludo
Francisco Muņoz

Yet another tip

It seems that "whois" queries are no longer quite the same. A simple
"whois xyz.com" defaults to the Network Solutions server, but due to
political machinations these guys are playing it tight lipped and have
sharply restricted the amount of info returned on a "whois". If you
need the in-depth goods on a domain name, you now have to turn to an
alternate whois server, such as ripe.net.

The following script, named 'wh', will do a domain name lookup on any of three
alternate whois servers. As root, save 'wh' to /usr/local/bin, and then create
three symbolic links in that directory, like so:

The script can be invoked as 'wh zzz.com', which does a lookup of
zzz.com on the ripe.net server. If invoked as 'wh-cw zzz.com', it looks
up zzz.com on the cw.net server. If invoked as 'wh-radb zzz.com', it
looks up zzz.com on the radb server.

These alternate servers unfortunately do not list as many domain names
as the Network Solutions server, but they do provide a great deal more
info on the ones they have.

Tips in the following section are answers to questions printed in the Mail
Bag column of previous issues.

ANSWER: Linux clickability in windows NT Domain

As a new feller, I'm flabbergasted that a question was asked that I KNEW!

Network Neighborhood is using WINS to resolve the IP addresses. The NT
machines may have the correct domain name in there (DNS tab), but, on the
WINS Addressing tab (start | settings | control panel | network |
protocols | TCPIP | Properties | WINS Addressing) there is a check tab
for

ANSWER: Making Linux talk to an NT network

Use the Diagnostics found on
http://us1.samba.org/samba/docs/DIAGNOSIS.html

You might be better to at least read the FAQ first
http://us1.samba.org/samba/docs/FAQ/

I just got most of my Samba issues resolved this week. I also felt like
I was spinning my wheels for a while. The Diagnostics will, besides help
you identify your problems, will also point out what you need to do MOST,
and that is, break your connectivity problems down into smaller bytes.

ie. Let us start with the 1st problem of your 10 Easy Step guide you
suggested. Come back with the 1st specific problem and we can go from
there.

ANSWER: Not a tip, but rather a question

I'm looking to add "disk mirroring" (RAID-1) to a SUSE 6.1 system with
an AHA-2940U2W.. I must be
looking in the wrong places, but it seems like information about this
particular issue is scarce at best.
Any ideas?

An idea is to use Software-RAID. This eliminates the need of a hardware
RAID controller.

What you need to do, is read the Sofware-RAID mini HOWTO. You can get
this document from http://www.linuxdoc.org/

You might have the file in /usr/doc/HOWTO/mini/ (or whever your system
stores HOWTOs) but there's a chance your local version is outdated. So
download the one from the LDP site mentioned above to ensure yourself of
reading the latest version.

ANSWER: Access 97

To the best of my, admittedly limited, knowledge, there is not a way to run
Access 97 directly on Linux. I think that I have seen some Linux ODBC
drivers which allow a Linux client to access an Access97 database running on
another computer. In particular, on
http://freshmeat.net/appindex/1999/12/07/944590737.html . This says that it
allows a Linux client to talk to any NT ODBC data source. This, of course,
requires running WindowsNT. You can do that by having two machines, one
running Linux the other running WindowsNT. Network them together with a
normal Ethernet connection. Or, you can purchase a product called VMWare
(http://www.vmware.com). This product allows you to install and run a
WindowsNT (or 95 or 98) system under Linux. Note - this DOES require you to
buy WindowsNT! It is not an emulator of WindowsNT, it simply allows a real
WindowsNT machine to run along with Linux on the same physical machine. I
have used this product to run Windows98 under Linux and it does work quite
well for me. VMWare allows the WindowsNT "virutal machine" to talk to Linux
via a "virtual" ethernet connection.

Question, why must you use Access97? Linux has some nice database software
that is free. I'm thinking mainly of PostgreSQL and MySQL. The main thing
that they lack is a "builtin" GUI interface. But I'm sure that there are
some out there. Probably in Perl or Python, both of which can "talk" to
either of those database systems.

ANSWER: Re: pulse vs tone dialing

You need to change "atdt" to "atdp". Where you change this depends on how you
are dialing and perhaps on your distribution. On a Red Hat or Mandrake system
using "ifup ppp0" or UserNet, this is in
/etc/sysconfig/network-scripts/chat-ppp0. In kppp, hit Setup, Modem tab, Modem
Commands button. The config file is ~/.kde/share/config/kppprc if you need to
edit it by hand or program.

ANSWER: Linux Red Hat installation kernel panic Unable to mount root

You should boot your linux box with the boot disk you created, or where meant to create when installing Linux. Once booted, if all goes well, you will have you linux box up and running. Then re-install lilo or your favourite boot manager by typing lilo. If you want to set the dos partition to startup by default use lilo -D dos.

If this does not solve your problem or things do not go as I mentioned above drop me a mail.

From Chuck Whinney on Sun, 05 Dec 1999
I cant seem to get my Linksys Ether16 LAN card to work under linux. I turned
off the PnP liek teh linksys website said, and I turned the motherboard
setting from PnP on that IRW to the ISA setting. Linux still never
recognizes it.
Any ideas? Thanks! Chuck

I wanted to comment on this because some easy items where missed in
answering this customer. THe chipset is fully supported, being an NE2000
clone that works just fine. If he is having difficulty installing it, here's
where he should check:

#1 Conflicts. This is not likely a problem, since the Ether software that
sets the IRQ and I/O of the card checks for conflicts before setting the
resources. If you have not installed new hardware, or turned on any extra on
board peripherals (Serial, Parallel, or USB ports), this shouldn't be an
issue.

#2 How the driver is loaded. As a shot in the dark, you are likely using
redhat, in which case the best choice is to use Linux Config to set up the
module to load at boot. Most distros will work the same way, but some you
have to manually edit rc.* files. THere is a linux-conf topic for network
interfaces, but I forget what it is called ATM. If you have to edit the rc.*
files, look for a rc.modules file; most distrobutions have one with the
network card modules already specified, but commented out. Find the one with
your module ( ne2k.o I believe) and uncomment it. In either case, don't
worry about specifying the IRQ; you only need to note the I/O address for
this card. *VERY IMPORTANT* when specifying the I/O port, use "0x320"
instead of "320". You have to specify the number is hex, which is '0x'. So,
if the software that disabled your plug n play on the card said it was using
port "330", tell linux that the port is "0x330" Don't expect the module to
autodetect the card: on this card, it almost never works (I own three of
them personally), while autodetect works on other cards, such as my SMC. I
don't know why, but don't count on the module to detect the card.

#3. I dont know about ISA IRQ changes you made in the BIOS. From personal
experience, they just aren't needed. You sound comfortable enough with them,
so you may want to change them back to normal once you are positve the Linux
configurations are correct and complete.

#4 Standard troubleshooting: If you dont get an error when booting, check
'ifconfig'. You may just need to assign the card an address, subnet, et al.
Or, run dhcpcd if you have a DHCP server/cable modem/DSL router/whatever.
Try a different ISA slot. If all looks good locally, but you cant reach
outside of your own box, check your cables, subnet mask. First answer if the
problem is hardware or software. Tackle it logically.

ANSWER: Diamond SupraExpress 56i V PRO

Hi,
I read your question on Linux Gazette #48 about installing a Diamond
SupraExpress 56i V PRO under Linux and I have to give you bad news: it's
a winmodem. Well, it is not a full winmodem, as it does data compression
on the modem rather than on the PC, but it is partialy
software-controled, so it will only work with the proper drivers
installed. As the technical staff at Diamond told me (yes, I had a
SupraExpress 56i V PRO), there are no plans to provide drivers for
platforms other than Win32. I also emailed the developer support staff,
but I got no answer from them.
Alberto.

ANSWER: Suggestion and ideas

Just read a Linux newbie guide and an Instalation guide. :-)
Try not to read all the other stuff ... untill you need it or had finished the
instalation (and everything is working)

1 To get out from a manual just hit q (From the origins of the Unix world q
was the key to quit :-) You are right, This is said in noplace. I have figured
in and old VAX some years ago just after 10 minutes (You have to log out
before you could leave the terminal)

2 To copy a file use (much like the old MSDOS copy, well not really) use:
cp file1 target
where target can be a file or a directory (just type man cp, now that you know
how to exit tit :-)

3 Pico is nice, In console mode I use the midnight commander to navigate the
directories and just hit F4 to launch cooledit and edit files (Funtions keys
hints are at the bottom of the screen) Very easy. I miss it a lot when I use
the University Solaris box.

4 ????

ANSWER: Re: HELP with LT Win Modem and SB 16 >Sound Blaster wanted!

It's true; Winmodems don't work under Linux. Winmodems are
specially designed to work with Microsoft Windows and are not supported
in Linux. The only way to get a modem to work is to buy a
non-winmodem.

This is not strictly true...

Go to www.linmodems.org.

I managed to get my LT Winmodem going on my Acer notebook - runs sweeter than it did under win98.