find network hosts: for ip in $(seq 1 254); do ping -c 1 192.168.1.$ip>/dev/null; [ $? -eq 0 ] && echo "192.168.1.$ip UP" || : ; done SCP: Copy the file "foobar.txt" from a remote host to the local host $ scp your_username@remotehost.edu:foobar.txt /some/local/directory Copy the file "foobar.txt" from the local host to a remote host $ scp foobar.txt your_username@remotehost.edu:/some/remote/directory Copy the directory "foo" from the local host to a remote host's directory "bar" $ scp -r foo your_username@remotehost.edu:/some/remote/directory/bar Copy the file "foobar.txt" from remote host "rh1.edu" to remote host "rh2.edu" $ scp your_username@rh1.edu:/some/remote/directory/foobar.txt \ your_username@rh2.edu:/some/remote/directory/ Copying the files "foo.txt" and "bar.txt" from the local host to your home directory on the remote host $ scp foo.txt bar.txt your_username@remotehost.edu:~ Copy the file "foobar.txt" from the local host to a remote host using port 2264 $ scp -P 2264 foobar.txt your_username@remotehost.edu:/some/remote/directory Copy multiple files from the remote host to your current directory on the local host $ scp your_username@remotehost.edu:/some/remote/directory/\{a,b,c\} . $ scp your_username@remotehost.edu:~/\{foo.txt,bar.txt\} . Update rpm to 4.14.2.1: * update setup.sh, download 4.14.2.1 tarball * update tools.sh, build 4.14.2.1 * update base.sh: not needed * update rpm.spec, see below * drop python dependency #TARBALL: ftp.rpm.org/releases/rpm-4.14.x/rpm-4.14.2.1.tar.bz2 #TARBALL: http://download.oracle.com/berkeley-db/db-6.0.20.tar.gz #MD5SUM: fdb8b8857f103b087b6aed5b78dd9b4f;rpm-4.14.2.1.tar.bz2 #MD5SUM: f73afcb308aefde7e6ece4caa87b22a9;SOURCES/db-6.0.20.tar.gz #----------------------------------------------------------------------------- Summary: Package manager Name: rpm Version: 4.14.2.1 Release: 1 License: GPLv2 URL: http://rpm.org Group: LFS/BASE Vendor: Elizabeth Source0: ftp.rpm.org/releases/rpm-4.14.x/%{name}-%{version}.tar.bz2 Source1: http://download.oracle.com/berkeley-db/db-6.0.20.tar.gz Source2: macros Requires: filesystem %description Package manager #----------------------------------------------------------------------------- %prep %setup -q -n %{name}-%{version} %setup -q -T -D -a 1 -n %{name}-%{version} sed -i 's/--srcdir=$db_dist/--srcdir=$db_dist --with-pic/' db3/configure %build ln -vs db-6.0.20 db ./configure \ --prefix=%{_prefix} \ --program-prefix= \ --sysconfdir=/etc \ --with-crypto=openssl \ --with-cap \ --with-acl \ --without-external-db \ --without-archive \ --without-lua \ --disable-dependency-tracking \ --disable-silent-rules \ --disable-rpath \ --disable-plugins \ --disable-inhibit-plugin # --enable-python python bindings # --with-python=2.7 python bindings # --with-archive build rpm2archive - requires libarchive # --with-lua build with lua support tools.sh: --prefix=/tools \ --program-prefix= \ --sysconfdir=/tools/etc \ --with-crypto=openssl \ --without-external-db --without-archive \ --without-lua \ --disable-dependency-tracking \ --disable-silent-rules \ --disable-rpath \ --disable-plugins \ --disable-inhibit-plugin --disable-shared \ --enable-static \ --enable-zstd=no \ --enable-lmdb=no \ Read base.spec to get list of packages to install BASE.SPEC GENERATOR: TODO for base.sh Make a base.spec generator list= $( ls rpm dir ) for i in $list; do case $i in filespec*) ;; *) LIST+="Requires: ${i} " ;; esac done write header write requires write end then build base package RPM PACKAGE INSTALLER: fetch package name start with base ( sort unique ) determine binary package name insert into name = ${REPOPATH}/package name-* to process do until - process names, de dupe names requirements = $( rpm -qp --requires ${RPMS}/${RPM_ARCH}/${RPM_BINARY}): > ${REQUIRES}/${RPM_NAME} 2>&1 || true work string = $( rpm requirements ) determine requires [ rpm -qp --requires ] if / then filespec add to rpm list determine requires [ rpm -qp --requires ] else package add to rpm list binary name = strip current name from list of package names no more LIST+="${REPOPATH}/${i##Requires:}* " rpm -qp --requires ${RPMS}/${RPM_ARCH}/${RPM_BINARY} > ${REQUIRES}/${RPM_NAME} 2>&1 || true # rpm -q --whatprovides [file name] for i in ${LIST}; do find requires msg_line "installing: ${i} :" rpm --upgrade --verbose --hash --noscripts --root ${ROOTPATH} --dbpath ${DBPATH} "${REPOPATH}/${i}-*" msg_success done ./configure \ --prefix=/usr \ --program-prefix= \ --sysconfdir=/etc \ --with-crypto=openssl \ --with-cap \ --with-acl \ --without-external-db \ --without-archive \ --without-lua \ --disable-dependency-tracking \ --disable-silent-rules \ --disable-rpath \ --disable-plugins \ --disable-inhibit-plugin