Вот маленькая программа Python, которая может сделать это:
import sys
def only_contains_nulls(fobj, chunk_size=1024):
first = True
while True:
data = fobj.read(chunk_size)
if not data:
if first:
return 1 # No data
else:
return 0
if data.strip("\0"):
return 1
first = False
if __name__ == '__main__':
with open(sys.argv[1]) as f:
sys.exit(only_contains_nulls(f))
И в действии:
$ printf '\0\0\0' > file
$ ./onlynulls file && echo "Only nulls" || echo "Non-null characters"
Only nulls
$ printf a >> file
$ ./onlynulls file && echo "Only nulls" || echo "Non-null characters"
Non-null characters
Можно проверить несколько файлов при помощи находки -exec
, xargs
, GNU parallel
, и подобные программы. С другой стороны, это распечатает имена файлов, с которыми нужно иметь дело:
files=( file1 file2 )
for file in "${files[@]}"; do
./onlynulls "$file" || printf '%s\n' "$file"
done
Примите во внимание, что, если Вы собираетесь передать вывод этого к другой программе, имена файлов могут содержать новые строки, таким образом, необходимо разграничить его по-другому (подходяще, с \0
).
Если бы у Вас есть много файлов, было бы лучше использовать опцию для параллельной обработки, так как это только читает один файл за один раз.
/usr/bin/ssh-copy-id: ERROR: No identities found
Эта команда только работает, если Вам создали идентификационные данные ранее через ssh-keygen
.
Сначала используйте приведенную ниже команду на исходном сервере:
ssh-keygen
Вывод, как показано ниже:
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
После этого использования команда ssh-copy-id
должна работать.